![]() SELECTIVE CONTROL OF INSTRUCTION EXECUTION IN TRANSACTIONAL PROCESSING
专利摘要:
selective control of instruction execution in transactional processing. the execution of instructions in a transactional environment is selectively controlled. a transaction begin statement starts a transaction and includes controls that selectively indicate whether certain types of statements are allowed to execute within the transaction. controls include one or more of a grant access record modification control and a grant floating point operation control. 公开号:BR112014031354B1 申请号:R112014031354-7 申请日:2013-06-12 公开日:2022-01-04 发明作者:Dan Greiner;Christian Jacobi;Timothy Slegel;Robert Rogers 申请人:International Business Machines Corporation; IPC主号:
专利说明:
Background of the Invention [0001] One or more aspects generally refer to multiprocessing computing environments and, in particular, transactional processing within such computing environments. [0002] An ongoing challenge in multiprocessor programming is that of upgrades to the same storage location by multiple central processing units (CPUs). Many instructions that update storage locations, including even simple logical operations such as AND, do so with multiple accesses to the location. For example, first the storage location is searched and loaded, then the updated result is stored again. [0003] For multiple CPUs to securely update the same storage location, location access is serialized. One instruction, the TEST AND SET instruction, introduced with the S/360 architecture formally provided by the International Business Machines Corporation, provided an interlocked update of a storage location. Lock update means that, as observed by other CPUs and the input/output (I/O) subsystem (eg, channel subsystem), all instruction storage access appears to occur atomically. Later, the S/370 architecture provided by the International Business Machines Corporation introduced COMPARE AND SWAP and COMPARE DOUBLE AND SWAP instructions that provide a more sophisticated means of performing the lock update and allow the implementation of what is commonly known as a lock word. (or semaphore). Newly added instructions provided additional lock update features including COMPARE AND SWAP AND PURGE and COMPARE AND SWAP AND STORE. However, all these instructions provide locking to only a single storage location. [0004] More complex program techniques may require the lock update of multiple storage locations, such as when adding an element to a doubly linked list. In such an operation, both a forward and backward pointer must appear to be updated simultaneously, as noted by other CPUs and the I/O subsystem. In order to perform such an update from multiple locations, the program is forced to use a single, separate serialization point, such as a lock word. However, blocking words can provide a much higher level of serialization than is required; for example, lock words can serialize an entire queue of millions of elements, even though only two elements are being updated. The program can structure the data to use more detailed serialization (for example, a hierarchy of lockpoints), but that introduces additional problems, such as potential fatal blocking situations if the hierarchy is violated, and recovery problems if the program encounters an error holding one or more locks or if the lock cannot be obtained. [0005] In addition to the above, there are several scenarios where a program may execute a sequence of instructions that may or may not result in an exception condition. If no exception conditions occur, then the program continues; however, if an exception is recognized, then the program can take corrective action to eliminate the exception condition. Java, as an example, can exploit such execution, for example, in speculative execution, partial embedding of a function, and/or in pointer null check resequencing. [0006] In classic operating system environments, such as z/OS and its predecessors provided by International Business Machines Corporation, the program establishes a recovery environment to intercept any program exception conditions it may encounter. If the program does not trap the exception, the operating system typically abends the program for exceptions that the operating system is not prepared to handle. Establishing and exploiting such an environment is expensive and complicated. Brief Summary [0007] The shortcomings of the prior art are overcome and advantages are provided through the provision of a computer program product to control the execution of instructions within transactions of a computational environment, a transaction effectively delaying the commitment of transactional stores to main memory. until the completion of a selected transaction. The computer program product includes a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for executing a method. The method includes, for example, obtaining by a processor a machine instruction for execution, the machine instruction being defined for execution by a computer in accordance with a computer architecture, the machine instruction including an opcode to specify a transaction start operation; and at least one control to be used to control the execution of one or more types of instructions in transactional processing; and execution by the processor of the machine instruction, the execution including initiating a transaction; and using a first control of the at least one control to determine a first value, the first value to control the execution within the transaction of an instruction of a first type. [0008] Methods and systems referring to one or more embodiments are also described and claimed herein. Furthermore, services referring to one or more embodiments are also described and may be claimed in this document. [0009] Additional features and advantages are realized. Other embodiments and aspects are described in detail herein and are considered a part of the claimed invention. Brief Description of the Various Views of the Drawings [0010] One or more aspects are particularly highlighted and distinctly claimed as examples in the claims at the end of the specification. The above and other objects, features and advantages are evident from the following detailed description considered in conjunction with the attached drawings, in which: [0011] Figure 1 represents an embodiment of a computing environment; [0012] Figure 2A represents an example of a Transaction Start (TBEGIN) instruction; [0013] Figure 2B represents an embodiment of additional details of a field of the TBEGIN instruction of figure 2A; [0014] Figure 3A represents an example of a constrained Transaction Start (TBEGINC) instruction; [0015] Figure 3B represents an embodiment of additional details of a field of the TBEGINC instruction of figure 3A; [0016] Figure 4 represents an example of an End of Transaction (TEND) instruction; [0017] Figure 5 represents an example of a Transaction Abortion (TABORT) instruction; [0018] Figure 6 represents an example of grouped transactions; [0019] Figure 7 represents an example of a NONTRANSACTIONAL STORE (NTSTG) instruction; [0020] Figure 8 represents an example of an EXTRACT TRANSACTION NESTING DEPTH (ETND) instruction; [0021] Figure 9 represents an example of a transaction diagnostic block; [0022] Figure 10 represents examples of reasons for abortion, along with condition codes and associated abortion codes; [0023] Figure 11 represents an embodiment of the logic associated with the execution of a TBEGINC instruction; [0024] Figure 12 represents an embodiment of the logic associated with the execution of a TBEGIN instruction; [0025] Figure 13 represents an embodiment of the logic associated with the execution of a TEND instruction; [0026] Figure 14 represents an example of the logic to update controls to selectively allow restricted instructions; [0027] Figures 15A-15B represent an example of inserting a queue element into a doubly linked list of queue elements; [0028] Figure 16 represents an embodiment of a computer program product; [0029] Figure 17 represents an embodiment of a host computer system; [0030] Figure 18 represents an additional example of a computer system; [0031] Figure 19 represents another example of a computer system comprising a computer network; [0032] Figure 20 represents an embodiment of various elements of a computer system; [0033] Figure 21A represents an embodiment of the execution unit of the computer system of figure 20; [0034] Figure 21B represents an embodiment of the branch unit of the computer system of figure 20; [0035] Figure 21C represents an embodiment of the loading/storage unit of the computer system of figure 20; and [0036] Figure 22 represents an embodiment of an emulated host computer system. Detailed Description [0037] According to one aspect, a transactional execution facility (TX) is provided. This facility provides transactional processing for instructions and, in one or more embodiments, offers different modes of execution, as described below, as well as bundled levels of transactional processing. [0038] Transactional execution facility introduces a CPU state called transactional execution (TX) mode. After CPU reset, CPU is not in TX mode. The CPU enters TX mode by a TRANSACTION BEGIN instruction. The CPU leaves TX mode by (a) an outermost TRANSACTION END instruction (more on inner and outer later) or (b) the transaction being aborted. While in TX mode, storage accesses by the CPU appear to be simultaneous blocks as seen by other CPUs and the I/O subsystem. Storage accesses are (a) committed to storage when the outermost transaction completes without aborting (i.e., updates made to a cache memory location or buffer to the CPU are propagated and stored in real memory and visible to others). CPUs) or (b) discarded if the transaction aborts. [0039] Transactions can be grouped. That is, while the CPU is in TX mode, it can execute another TRANSACTION BEGIN instruction. The instruction that causes the CPU to enter TX mode is called the outermost TRANSACTION BEGIN; similarly, the program is said to be in the outermost transaction. Subsequent executions of TRANSACTION BEGIN are called inner statements; and the program is executing an internal transaction. The model provides a model-dependent minimum clustering depth and a model-dependent maximum clustering depth. An EXTRACT TRANSACTION NESTING DEPTH statement returns the current nesting depth value and, in an additional embodiment, may return a maximum nesting depth value. This technique uses a model called “flat wrapping”, where an abort condition at any depth of wrapping causes all levels of the transaction to be aborted and control returned to the statement after the outermost TRANSACTION BEGIN. [0040] During the processing of a transaction, a transactional access made by one CPU is said to conflict with (a) a transactional access or non-transactional access made by another CPU or (b) a non-transactional access made by the I/O subsystem, if both accesses are anywhere within the same cache memory line and one or both accesses are a store. In other words, in order for transactional execution to be productive, the CPU should not be observed making transactional accesses until it is committed. This programming model can be highly effective in certain environments; for example, updating a colon in a doubly linked list of one million elements. However, it can be less effective if there are a lot of contentions for the storage locations being transactionally accessed. [0041] In a transactional execution model (referred to in this document as an unconstrained transaction), when a transaction is aborted, the program may either attempt to reactivate the transaction in the expectation that the abort condition is no longer present, or the program may “backtrack” to an equivalent non-transactional path. In another transactional execution model (referred to in this document as a constrained transaction), an aborted transaction is automatically reactivated by the CPU; in the absence of restricted violations, the restricted transaction is assured of eventual completion. [0042] When starting a transaction, the program can specify various controls, such as (a) which general registers are restored to their original contents if the transaction is aborted, (b) whether the transaction is allowed to modify the point record context floating point, including, for example, floating point registers and the floating point control register, (c) whether the transaction is allowed to modify access registers (ARs), and (d) whether certain program exception conditions must be blocked to cause an interruption. If an unconstrained transaction is aborted, various diagnostic information can be provided. For example, the outermost TBEGIN statement that initiates an unconstrained transaction might designate a program-specific transaction diagnostic block (TDB). Furthermore, the TDB in the prefix area of the CPU or designated by the host state description can also be used if the transaction aborts due to a program interrupt or a condition that causes interpretive execution to terminate, respectively. [0043] Various types of records are indicated above. These are further explained in detail in this document. General registers can be used as accumulators in general arithmetic and logical operations. In one embodiment, each register contains 64-bit positions, and there are 16 general registers. General registers are identified by the numbers 0-15 and are designated by a four-bit R field in an instruction. Some instructions provide the addressing of multiple general registers having multiple R fields. For some instructions, the use of a specific general register is implied rather than explicitly designated by an R field of the instruction. [0044] In addition to their use as accumulators in general arithmetic and logic operations, 15 of the 16 general registers are also used as index and base address registers in address generation. In these cases, the registers are designated by a four-bit B field or X field in an instruction. A value of zero in field B or X specifies that no base or index is to be applied, and thus general register 0 must not be designated as containing an index or base address. [0045] Floating point instructions use a floating point register set. The CPU has 16 floating point registers in one embodiment. Floating-point registers are identified by the numbers 0-15 and are designated by a four-bit R field in floating-point instructions. Each floating-point register is 64 bits long and can contain either a short (32-bit) or long (64-bit) floating-point operand. [0046] A floating point control (FPC) register is a 32-bit register that contains mask bits, flag bits, a data exception code, and rounded-mode bits, and is used during processing operations. floating point. [0047] Also, in one embodiment, the CPU has 16 control registers, each having 64-bit positions. Bit positions in registers are assigned to particular features in the system, such as Program Event Recording (PER) (discussed below), and are used to specify that an operation may occur or to provide special information required by the feature. In one embodiment, for the transactional facility, CR0 (bits 8 and 9) and CR2 (bits 61-63) are used, as described below. [0048] The CPU has, for example, 16 access registers numbered 0-15. An access register consists of 32-bit positions containing an indirect specification of an address space control element (ASCE). An address space control element is a parameter used by the dynamic address translation (DAT) engine to translate references into a corresponding address space. When the CPU is in a mode called register access mode (controlled by bits in the program status word (PSW)), an instruction B field, used to specify a logical address for a storage operand reference, designates an access record, and the address space control element specified by the access record is used by DAT for the reference being made. For some instructions, an R field is used instead of a B field. Instructions are provided for loading and storing the contents of access records and for moving the contents from one access record to another. [0049] Each of access registers 1-15 can designate any address space. Access register 0 designates the primary instruction space. When one of access registers 1-15 is used to designate an address space, the CPU determines which address space is designated by translating the contents of the access register. When access register 0 is used to designate an address space, the CPU treats the access register as the primary instruction space designation, and does not examine the actual contents of the access register. Therefore, the 16 access registers can at any time designate the primary instruction space and a maximum of 15 other spaces. [0050] In one embodiment, there are several types of address spaces. An address space is a consecutive sequence of integers (virtual addresses), along with specific transformation parameters that allow each number to be associated with a byte location in storage. The sequence starts at zero and proceeds from left to right. [0051] For example, in the z/ Architecture, when a virtual address is used by a CPU to access main storage (aka, main memory), it is first converted, via dynamic address translation (DAT), into a real and then, via prefixing, to an absolute address. DAT can use one to five levels of tables (page, segment, third region, second region and first region) as transformation parameters. The assignment (source and length) of the top-level table to a specific address space is called an address space control element and is found for use by DAT in a control register or as specified by an access register. . Alternatively, the address space control element for an address space may be a real space designation, which indicates that DAT should translate the virtual address simply by treating it as a real address and without using any tables. [0052] DAT uses, at different times, address space control elements in different control registers or specified by access registers. The choice is determined by the translation mode specified in the current PSW. Four translation modes are available: primary space mode, secondary space mode, access record mode and start space mode. Different address spaces are addressable depending on the translation mode. [0053] At any time when the CPU is in primary space mode or secondary space mode, the CPU can translate virtual addresses belonging to two address spaces - the primary address space and the secondary address space. At any time when the CPU is in access register mode, it can translate virtual addresses from up to 16 address spaces - the primary address space and up to 15 AR-specified address spaces. At any time when the CPU is in home space mode, it can translate virtual addresses from the home address space. [0054] The primary address space is identified as such because it consists of primary virtual addresses, which are translated through the primary address space control element (ASCE). Similarly, the secondary address space consists of secondary virtual addresses translated through the secondary ASCE; AR-specified address spaces consist of AR-specified virtual addresses translated through AR-specified ASCEs; and the starting address space consists of starting virtual addresses translated through the starting ASCE. The primary and secondary ASCEs are in control registers 1 and 7, respectively. ASCEs specified by AR are in second ASN table entries that are located through a process called access record translation (ART) using control records 2, 5, and 8. The initial ASCE is in control record 13. [0055] An embodiment of a computing environment to incorporate and use one or more aspects of the transactional facility described in this document is described with reference to Figure 1. [0056] Referring to Figure 1, in an example, the computing environment 100 is based on the z/ Architecture, provided by International Business Machines (IBM®) Corporation, Armonk, New York. The z/ Architecture is described in an IBM Publication entitled “z/Architecture - Principles of Operation”, Publication No. SA22-7932-08, 9th Edition, August 2010. Z/ARCHITECTURE, IBM and Z/OS and Z/VM (referenced below) are registered trademarks of International Business Machines Corporation, Armonk, New York. Other names used in this document may be product names, trademarks, or registered trademarks of International Business Machines Corporation or other companies. [0057] As an example, the computing environment 100 includes a central processor complex (CPC) 102 coupled to one or more input/output (I/O) devices 106 through one or more control units 108. central processor 102 includes, for example, one or more central processors 110, one or more partitions 112 (e.g., logical partitions (LP)), a logical partition hypervisor 114, and an input/output subsystem 115, each of which is described below. [0058] CPUs 110 are physical processor resources allocated to logical partitions. In particular, each logical partition 112 has one or more logical processors, each of which represents all or a part of a physical processor 110 allocated to the partition. The logical processors of a particular partition 112 may be dedicated to the partition, so that the underlying processor resource 110 is reserved for that partition; or shared with another partition so that the underlying processor resource is potentially available to another partition. [0059] A logical partition functions as a separate system and has one or more applications and, optionally, an operating system residing on it, which may differ for each logical partition. In one embodiment, the operating system is the z/OS operating system, the z/VM operating system, the z/Linux operating system, or the TPF operating system, provided by International Business Machines Corporation, Armonk, New York. Logical partitions 112 are managed by a logical partition hypervisor 114, which is implemented by firmware running on processors 110. As used herein, firmware includes, for example, processor microcode and/or millicode. It includes, for example, the hardware-level data structures and/or instructions used in implementing higher-level machine code. In one embodiment, it includes, for example, proprietary code, i.e. typically distributed as microcode that includes trusted software or microcode specific to the underlying hardware and controls the operating system's access to the system's hardware. [0060] The logical partitions and logical partition hypervisor each comprise one or more programs residing on the respective central storage partitions associated with the central processors. An example of a logical partition 114 hypervisor is the Resource Manager/Processor System (PR/SM), provided by International Business Machines Corporation, Armonk, New York. [0061] Input/output subsystem 115 directs the flow of information between input/output devices 106 and main storage (a.k.a., main memory). It is coupled to the central processing complex, where it can be a part of the central processing complex or separate from it. The I/O subsystem relieves central processors of the task of communicating directly with input/output devices and allows data processing to proceed simultaneously with input/output processing. To provide communications, the I/O subsystem employs I/O communication adapters. There are several types of communication adapters including, for example, channels, I/O adapters, PCI cards, Ethernet cards, Small Computer Storage Interface (SCSI) cards, etc. In the particular example described in this document, the I/O communication adapters are channels, and therefore the I/O subsystem is referred to in this document as a channel subsystem. However, this is just an example. Other types of I/O subsystems can be used. [0062] The I/O subsystem uses one or more input/output paths as communication links in managing the flow of information to or from input/output devices 106. In this particular example, these paths are referred to as input paths. channel, since communication adapters are channels. [0063] The computing environment described above is just an example of a computing environment that can be used. Other environments, including, but not limited to, non-partitioned environments, other partitioned environments, and/or emulated environments, may be used; embodiments are not limited to any environment. [0064] In one or more aspects, the transactional execution facility is an enhancement of the CPU that provides the means by which the CPU can execute a sequence of instructions - known as a transaction - that can access multiple storage locations, including updating these locations. As noted by other CPUs and the I/O subsystem, the transaction either (a) completes in its entirety as a single atomic operation, or (b) aborts, potentially leaving no evidence that it has already been executed (except for certain conditions described in this document). ). In this way, a successfully completed transaction can update multiple storage locations without any special locks, ie required in the classic multiprocessing model. [0065] The transactional execution facility includes, for example, one or more controls; one or more instructions; transactional processing, including restricted and unrestricted execution; and abortion processing, each of which is further described below. [0066] In one embodiment, three special-purpose controls, including a transaction abort Program Status Word (PSW), a transaction diagnostic block (TDB) address, and a transaction grouping depth; five bits of control register; and six general statements, including TRANSACTION BEGIN (restricted and unrestricted), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT, and NONTRANSACTIONAL STORE, are used to control the ease of transactional execution. When the facility is installed, it is installed, for example, on all CPUs in the configuration. A facility indication, bit 73 in an implementation, when one, indicates that the transactional execution facility is installed. [0067] When the transactional execution facility is installed, the configuration provides an unconstrained transactional execution facility and, optionally, a constrained transactional execution facility, each of which is described below. When facility indications 50 and 73, as examples, are both one, the constrained transactional execution facility is installed. Both feature indications are stored in memory at specified locations. [0068] As used in this document, the instruction name TRANSACTION BEGIN refers to instructions having the mnemonics TBEGIN (Transaction Start for an unconstrained transaction) and TBEGINC (Transaction Start for a constrained transaction). Discussions pertaining to a specific instruction are indicated by the instruction name followed by the mnemonic in parentheses or square brackets or simply by the mnemonic. [0069] An embodiment of a format of a TRANSACTION BEGIN (TBEGIN) instruction is shown in FIGURES 2A-2B. As an example, the TBEGIN 200 instruction includes an opcode field 202 that includes an opcode specifying an unrestricted TRANSACTION BEGIN operation; a base field (B1) 204; a shift field (D1) 206; and an immediate field (I2) 208. When field B1 is non-zero, the contents of the general register specified by B1 204 are added to D1 206 to obtain the first operand address. [0070] When the B1 field is non-zero, the following applies:• When the transaction grouping depth is initially zero, the first operand address designates the location of the 256-byte transaction diagnostic block, called the specified TDB by TBEGIN (described in detail below), where various diagnostic information can be stored if the transaction is aborted. When the CPU is in primary space mode or access register mode, the first operand address designates a location in the primary address space. When the CPU is in secondary space or initial space mode, the first operand address designates a location in secondary space or initial address, respectively. When the DAT is off, the transaction diagnostic block (TDB) address (TDBA) designates a location in actual storage. Storage accessibility to the first operand is determined. If accessible, the logical address of the operand is placed in the transaction diagnostic block (TDBA) address, and the TDBA is valid.• When the CPU is already in unconstrained transactional execution mode, the TDBA is not modified and is unpredictable whether the first operand is tested for accessibility. [0071] When field B1 is zero, no access exception is detected for the first operand, and for the outermost TBEGIN instruction, the TDBA is invalid. [0072] The I2 field bits are set as follows, in an example: [0073] General Register Save Mask (GRSM) 210(FIGURE 2B): Bits 0-7 of field I2 contain the general register save mask (GRSM). Each GRSM bit represents an odd-even pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so on. When a bit in the GRSM of the outermost TBEGIN instruction is zero, the corresponding register pair is not saved. When a bit in the GRSM of the outermost TBEGIN instruction is one, the corresponding register pair is saved in a model-dependent location that is not directly accessible by the program. [0074] If the transaction aborts, the saved register pairs are restored to their contents when the outermost TBEGIN instruction is executed. The contents of all other general (unsaved) records are not restored when a transaction aborts. [0075] General register save mask is ignored in all but the outermost TBEGIN. [0076] AR Modification Permission (A) 212: Control A, bit 12 of field I2, controls whether the transaction is allowed to modify an access record. The effective AR modify permission control is the logical AND of control A in the TBEGIN instruction for the current grouping level and for all external levels. [0077] If effective control A is zero, the transaction will abort with abort code 11 (restricted instruction) if an attempt is made to modify any access record. If the effective control A is one, the transaction will not abort if an access record is modified (absence of any other abort condition). [0078] Floating Point Operation Permission (F) 214: Control F, bit 13 of field I2, controls whether the transaction is allowed to execute specified floating point instructions. The effective floating point operation permission control is the logical AND of the F control in the TBEGIN instruction for the current grouping level and for all external levels. [0079] If effective control F is zero, then (a) the transaction will abort with abort code 11 (restricted instruction) if an attempt is made to execute a floating point instruction, and (b) the exception code data (DXC) in byte 2 of the floating point control register (FPCR) will not be defined by any exception condition of the data exception program. If the effective control F is one, then (a) the transaction will not abort if an attempt is made to execute a floating-point instruction (absence of any other abort condition), and (b) the DXC in FPCR can be defined by the exception condition of the data exception program. [0080] Program Interrupt Filtering Control (PIFC) 216: Bits 14-15 of field I2 are the program interrupt filtering control (PIFC). The PIFC controls whether certain classes of program exception conditions (eg, addressing exception, data exception, operation exception, protection exception, etc.) that occur while the CPU is in transactional execution mode result in an interrupt. [0081] Effective PIFC is the highest value of the PIFC in the TBEGIN instruction for the current grouping level and for all external levels. When the effective PIFC is zero, all program exception conditions result in an interrupt. When the effective PIFC is one, program exception conditions having a transactional execution class of 1 and 2 result in an interrupt. (Each program exception condition is assigned at least one transactional execution class, depending on the severity of the exception. The severity is based on the probability of recovery during a repeated execution of the transactional execution, and whether the operating system needs to see the interruption.) When the effective PIFC is two, exception conditions from the program having a transactional execution class of 1 result in an interrupt. A PIFC of 3 is reserved. [0082] Bits 8-11 of field I2 (bits 40-43 of the instruction) are reserved and must contain zeros; on the contrary, the program may not work compatibly in the future. [0083] An embodiment of a format of a constrained Transaction Start (TBEGINC) instruction is described with reference to FIGURES 3A-3B. In one example, TBEGINC 300 includes an opcode field 302 that includes an opcode specifying a restricted transaction start operation; a base field (B1) 304; a shift field (D1) 306; and an immediate field (I2) 308. The contents of the general register specified by B1 304 are added to D1 306 to obtain the first operand address. However, with start-of-transaction constrained instruction, the first operand address is not used to access storage. Instead, the B1 field of the instruction includes zeros; instead, a specification exception is recognized. [0084] In one embodiment, the I2 field includes several controls, an example of which is shown in Figure 3B. [0085] The I2 field bits are set as follows, in an example: [0086] General Register Save Mask (GRSM) 310:Bits 0-7 of field I2 contain the General Register Save Mask (GRSM). Each bit of the GRSM represents an odd-even pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so on. When a bit in GRSM is zero, the corresponding register pair is not saved. When a bit in GRSM is one, the corresponding register pair is saved in a model-dependent location, that is, not directly accessible by the program. [0087] If the transaction aborts, the saved register pairs are restored to their contents when the outermost TRANSACTION BEGIN instruction was executed. The contents of all other general (unsaved) records are not restored when a restricted transaction aborts. [0088] When TBEGINC is used to resume execution in unconstrained transaction execution mode, the Save General Register Mask is ignored. [0089] AR Modification Permission (A) 312: Control A, bit 12 of field I2, controls whether the transaction is allowed to modify an access record. The effective AR modify permission control is the logical AND of control A in the TBEGINC instruction to the current grouping level and to any external TBEGIN or TBEGINC instructions. [0090] If effective control A is zero, the transaction will abort with abort code 11 (restricted instruction) if an attempt is made to modify any access record. If the effective control A is one, the transaction will not abort if an access record is modified (absence of any other abort condition). [0091] Bits 8-11 and 13-15 of the I2 field (bits 40-43 and 45-47 of the instruction) are reserved and must contain zeros. [0092] The end of a Start of Transaction instruction is specified by a TRANSACTION END (TEND) instruction, a format of which is shown in figure 4. As an example, a TEND 400 instruction includes a 402 opcode field that includes a opcode specifying an end-of-transaction operation. [0093] Various terms are used in relation to ease of transactional execution and therefore, purely for convenience, a list of terms is provided below alphabetically. In one embodiment, these terms have the following definitions: [0094] Abort: A transaction aborts when it ends before a TRANSACTION END statement that results in a transaction grouping depth of zero. When a transaction aborts, the following occurs in one embodiment: • Transactional storage accesses made by any and all levels of the transaction are discarded (ie, uncommitted). • Non-transactional storage accesses made by any and all levels of the transaction. • Records designated by the general record save mask (GRSM) of the outermost TRANSACTION BEGIN statement are restored to their contents before transactional execution (that is, to their contents upon execution of the outermost TRANSACTION BEGIN statement). General registers not designated by the general register save mask of the outermost TRANSACTION BEGIN instruction are not restored.• Access registers, floating-point registers, and the floating-point control register are not restored. Any changes made to these registers during transaction execution are retained when the transaction aborts. [0095] A transaction can be aborted due to a variety of reasons, including tentative execution of a constrained instruction, attempted modification of a constrained resource, transactional conflict, exceeding multiple CPU resources, any interpretive execution interception condition, any interrupt, a TRANSACTION ABORT statement, and other reasons. A transaction abort code provides specific reasons why a transaction might abort. [0096] An example of a format for a TRANSACTION ABORT (TABORT) instruction is described with reference to figure 5. As an example, a TABORT 500 instruction includes a 502 opcode field that includes an opcode specifying a transaction abort operation; a base field (B2) 504; and a shift field (D2) 506. When field B2 is non-zero, the contents of the general register specified by B2 504 are added to D2 506 to obtain a second operand address; on the contrary, the second operand address is formed exclusively by the D2 field, and the B2 field is ignored. The second operand address is not used to address data; instead, the address forms the transaction abort code that is placed in a transaction diagnostic block during abort processing. Address computation for the second operand address follows the rules of address arithmetic: in 24-bit addressing mode, bits 0-29 are set to zero; in 31-bit addressing mode, bits 0-32 are set to zero. [0097] Commitment: Upon completion of an outermost TRANSACTION END instruction, the CPU commits to storing the accesses made by the transaction (i.e., the outermost transaction and any bundled levels), such that they are visible to other CPUs and to the I/O subsystem. As noted by other CPUs and the I/O subsystem, all lookup and load and store accesses made by all pooled levels of the transaction appear to occur as a single concurrent operation when the compromise occurs. [0098] The contents of general registers, access registers, floating point registers and the floating point control register are not modified by the compromise process. Any changes made to these records during transactional execution are retained when the transaction stores are compromised. [0099] Conflict: A transactional access made by one CPU conflicts with (a) a transactional access or non-transactional access made by another CPU or (b) non-transactional access made by the I/O subsystem, if both accesses are to either local within the same cache memory line, and one or more of the accesses is a store. [0100] A conflict can be detected by speculative execution of CPU instructions, even though the conflict cannot be detected in the conceptual sequence. [0101] Constrained transaction: A constrained transaction is a transaction that runs in constrained transactional execution mode and is subject to the following limitations:• A subset of the general instructions is available.• A limited number of instructions can be executed.• A number of limited number of operand storage locations can be accessed. • The transaction is limited to a single grouping level. [0102] In the absence of repeated interrupts or conflicts with other CPUs or I/O subsystems, a constrained transaction eventually completes, so an abort handler is not necessary. Restricted transactions are described in detail below. [0103] When a TRANSACTION BEGIN (TBEGINC) constrained instruction is executed while the CPU is already in unconstrained transaction execution mode, execution continues as a grouped unconstrained transaction. [0104] Constrained Transactional Execution Mode: When the transaction grouping depth is zero and a transaction is started by a TBEGINC instruction, the CPU enters constrained transactional execution mode. While the CPU is in constrained transactional execution mode, the transaction grouping depth is one. [0105] Wrapped Transaction: When the TRANSACTION BEGIN instruction is issued while the CPU is in unconstrained transactional execution mode, the transaction is wrapped. [0106] The transactional execution facility uses a model called flat clustering. In flat grouping mode, stores made by an inner transaction are not observable by other CPUs and the I/O subsystem until the outermost transaction commits to its stores. Similarly, if a transaction aborts, all grouped transactions abort, and all transactional stores of all grouped transactions are discarded. [0107] An example of grouped transactions is shown in figure 6. As shown, a first TBEGIN 600 starts an outermost transaction 601, TBEGIN 602 starts a first grouped transaction and TBEGIN 604 starts a second grouped transaction. In this example, TBEGIN 604 and TEND 606 define an innermost transaction 608. When TEND 610 runs, the transactional stores are committed 612 to the outermost transaction and all inner transactions. [0108] Unconstrained Transaction: An unconstrained transaction is a transaction that runs in unconstrained transactional execution mode. Although an unconstrained transaction is not constrained in the way that a constrained transaction is, it can still abort due to a variety of causes. [0109] Unconstrained Transactional Execution Mode: When a transaction is started by the TBEGIN instruction, the CPU enters unconstrained transactional execution mode. While the CPU is in unconstrained transactional execution mode, the transaction clustering depth can range from one to the maximum transaction clustering depth. [0110] Non-Transactional Access: Non-transactional accesses are storage operand accesses made by the CPU when not in transactional execution mode (ie classic storage accesses outside of a transaction). Also, accesses made by the I/O subsystem are non-transactional accesses. Additionally, the NONTRANSACTIONAL STORE instruction can be used to do non-transactional storage access while the CPU is in unconstrained transactional execution mode. [0111] An embodiment of a format of a NONTRANSACTIONAL STORE instruction is described with reference to Figure 7. As an example, a NONTRANSACTIONAL STORE instruction 700 includes a plurality of opcode fields 702a, 702b specifying an opcode that designates a non-storage operation. transactional; a register field (R1) 704 specifying a register, the contents of which are called the first operand; an index field (X2) 706; a base field (B2) 708; a first shift field (DL2) 710; and a second shift field (DH2) 712. The contents of the general registers designated by fields X2 and B2 are added to the contents of a concatenation of fields DH2 and DL2 to form the second operand address. When either or both of the X2 or B2 fields are zero, the corresponding record is not part of the addition. [0112] The first 64-bit operand is non-transactionally placed unchanged in the second operand location. [0113] The offset, formed by concatenating the DH2 and DL2 fields, is treated as a 20-bit signed binary integer. [0114] The second operand must be aligned on a double word boundary; otherwise, the specification exception is recognized and the operation is suppressed. [0115] External/Most External Transaction: A transaction with a lower numbered transaction grouping depth is an external transaction. A transaction with a transaction grouping depth value of one is the outermost transaction. [0116] An outermost TRANSACTION BEGIN statement is one executed when the transaction grouping depth is initially zero. An outermost TRANSACTION END statement is one that causes the transaction grouping depth to transition from one to zero. A constrained transaction is the outermost transaction in this embodiment. [0117] Program Interrupt Filtering: When a transaction is aborted due to certain program exception conditions, the program can optionally prevent the interrupt from occurring. This technique is called program interrupt filtering. Program interrupt filtering is submitted to the interrupt transactional class, effective program interrupt filtering control of the TRANSACTION BEGIN statement, and transactional execution program interrupt filtering overlay on control register 0. [0118] Transaction: A transaction includes the storage operand accesses made and selected general registers changed while the CPU is in transaction execution mode. For an unconstrained transaction, storage operand accesses can include both transactional accesses and non-transactional accesses. For a constrained transaction, storage operand accesses are limited to transactional accesses. As noted by other CPUs and the I/O subsystem, all storage operand accesses made by the CPU while in transaction execution mode appear to occur as a single concurrent operation. If a transaction is aborted, transactional storage accesses are discarded, and any records designated by the general-register save mask of the outermost TRANSACTION BEGIN statement are restored to their contents before transactional execution. [0119] Transactional Accesses: Transactional accesses are storage operand accesses made while the CPU is in transactional execution mode, with the exception of accesses made by the NONTRANSACTIONAL STORE instruction. [0120] Transactional Execution Mode: The term transactional execution mode (a.k.a., transaction execution mode) describes the common operation of both constrained and unconstrained transactional execution modes. Thus, when the operation is described, the terms unrestricted and restricted are used to qualify the transactional execution mode. [0121] When the transaction grouping depth is zero, the CPU is not in transactional execution mode (also called non-transactional execution mode). [0122] As noted by the CPU, lookups and loads and stores done in transactional execution mode are no different from those done when not in transactional execution mode. [0123] In one embodiment of the z/ Architecture, the transactional execution facility is under the control of bits 8-9 of control register 0, bits 61-63 of control register 2, the transaction grouping depth, the transaction diagnostic block and transaction abort program status word (PSW) address. [0124] After initial CPU reset, the contents of bit positions 8-9 of control register 0, bit positions 62-63 of control register 2, and transaction grouping depth are set to zero. When transactional execution control, bit 8 of control register 0, is zero, the CPU cannot be put into transactional execution mode. [0125] Additional details regarding the various controls are described below. [0126] As indicated, the transactional execution facility is controlled by two bits in control register zero and three bits in control register two. For example: [0127] Control Register Bits 0: The bit assignments are as follows, in one embodiment: [0128] Transactional Execution Control (TXC): Bit 8 of control register zero is transactional execution control. This bit provides a mechanism by which the control program (eg, operating system) can indicate whether or not the transactional execution facility is usable by the program. Bit 8 must be one to successfully enter transactional execution mode. [0129] When bit 8 of control register 0 is zero, tentative execution of the EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION BEGIN and TRANSACTION END instructions results in a special operation execution. [0130] An embodiment of a format for an EXTRACT TRANSACTION NESTING DEPTH instruction is described with reference to figure 8. As an example, an EXTRACT TRANSACTION NESTING DEPTH 800 instruction includes an opcode field 802 specifying an opcode that indicates the extraction operation from the transaction grouping depth; and an R1 804 record field that designates a general record. [0131] The current transaction grouping depth is placed in bits 48-63 of general register R1. Register bits 0-31 are unchanged, and register bits 32-47 are set to zero. [0132] In a further embodiment, the maximum transaction grouping depth is also placed in general register R1, such as bits 16-31. [0133] Transaction Execution Program Interrupt Filtering (PIFO) Override: Control register bit 9 is the transactional execution program interrupt filtering override. This bit provides a mechanism by which the control program can guarantee that any program exception condition that occurs while the CPU is in transactional execution mode results in an interrupt, regardless of the effective program interrupt filtering control specified or implied by the statement(s) TRANSACTION BEGIN. [0134] Control Register Bits 2: The assignments are as follows, in one embodiment: [0135] Transaction Diagnostic Scope (TDS): Bit 61 of control register 2 controls the applicability of Transaction Diagnostic Control (TDC) in bits 6263 of the register, as follows: TDSValue Meaning0 The TDC applies regardless of whether CPU is in supervisor or trouble state.1 TDC applies only when the CPU is in trouble state. When the CPU is in the supervisor state, processing is as if the TDC contains zero. [0136] Transaction Diagnostic Control (TDC): Control register 2 bits 62-63 is a 2-bit unsigned integer that can be used to cause transactions to be randomly aborted for diagnostic purposes. The TDC encoding is as follows, in an example: TDCValue Meaning2 Normal operation; transactions are not aborted as a result of TDC.3 Aborts each transaction in a random statement, but before execution of the outermost TRANSACTION END statement.4 Aborts random transactions in a random statement.5 Reserved [0137] When a transaction aborts due to a non-zero TDC, then one of the following situations can occur: • The abort code is set to any of the codes 7-11, 13-16 or 255, with the value of code randomly chosen by the CPU; the condition code is set corresponding to the abort code. Abort codes are further described below. • For an unrestricted transaction, the condition code is set to one. In this case, the abort code is not applicable. [0138] It is model dependent if TDC value 1 is implemented. If not implemented, a value of 1 acts as if 2 is specified. [0139] For a constrained transaction, a TDC value of 1 is treated as if a TDC value of 2 is specified. [0140] If a TDC value of 3 is specified, the results are unpredictable. [0141] Transaction Diagnostic Block (TDBA) Address: A valid Transaction Diagnostic Block (TDBA) address is set from the first operand address of the outermost TRANSACTION BEGIN (TBEGIN) instruction when the B1 field of the instruction it's not zero. When the CPU is in primary space or access register mode, the TDBA assigns a location in the primary address space. When the CPU is in secondary space, or initial space mode, the TDBA designates a location in the secondary or initial address space, respectively. When DAT (Dynamic Address Translation) is off, the TDBA designates a location in actual storage. [0142] The TDBA is used by the CPU to locate the transaction diagnostic block - called the TDB specified by TBEGIN - if the transaction is subsequently aborted. The rightmost three bits of the TDBA are zero, which means that the TDB specified by TBEGIN is on a doubleword boundary. [0143] When the B1 field of an outermost TRANSACTION BEGIN (TBEGIN) instruction is zero, the transaction diagnostic block address is invalid, and no TDB specified by TBEGIN is stored if the transaction is subsequently aborted. Transaction (TAPSW) [0144] During the execution of the TRANSACTION BEGIN (TBEGIN) instruction when the grouping depth is initially zero, the transaction abort PSW is set to the contents of the current PSW; and the transaction-abort PSW instruction address designates the next sequential instruction (that is, the instruction following the outermost TBEGIN). During execution of the constrained TRANSACTION BEGIN (TBEGINC) instruction when the grouping depth is initially zero, the transaction-abort PSW is set to the contents of the current PSW, except that the instruction address of the transaction-abort PSW designates the instruction TBEGINC (instead of the next sequential instruction after TBEGINC). [0145] When a transaction aborts, the condition code in the transaction abort PSW is replaced with a code indicating the severity of the abort condition. Subsequently, if the transaction was aborted due to causes that did not result in an interruption, the PSW is loaded from the transaction abort PSW; if the transaction was aborted due to causes that result in an interrupt, the transaction abort PSW is stored as the old interrupt PSW. [0146] Transaction Abort PSW is not changed during execution of any internal TRANSACTION BEGIN statement. Transaction Grouping Depth (TND) [0147] Transaction wrapping depth is, for example, an unsigned 16-bit value that is incremented each time a TRANSACTION BEGIN instruction completes with condition code 0 and decremented each time a TRANSACTION END instruction completes. The transaction grouping depth is reset to zero when a transaction is aborted or by CPU reset. [0148] In one embodiment, a maximum TND of 15 is implemented. [0149] In one implementation, when the CPU is in transactional constrained execution mode, the transaction grouping depth is one. Additionally, although the maximum TND can be represented as a 4-bit value, the TND is defined to be a 16-bit value in order to facilitate its inspection in the transaction diagnostic block. Transaction Diagnostic Block (TDB) [0150] When a transaction is aborted, various status information can be saved in a transaction diagnostic block (TDB), as follows:1. TDB specified by TBEGIN: For an unconstrained transaction, when the B1 field of the outermost TBEGIN instruction is non-zero, the first operand address of the instruction designates the TDB specified by TBEGIN. This is an application program-specified location that can be examined by the application abort controller.2. Program Interrupt (PI) TDB: If an unconstrained transaction aborts due to an unfiltered program exception condition, or if a constrained transaction aborts due to any program exception condition (i.e., any condition that results on a program interrupt being acknowledged), the PI-TDB is stored in locations in the prefix area. This is available for the operating system to inspect and terminate any diagnostic reports it may provide.3. Intercept TDB: If the transaction is aborted due to any program exception condition that results in an intercept (that is, the condition causes interpretive execution to terminate and control returns to the host program), a TDB is stored in a location specified in the state description block for the guest operating system. [0151] The TDB specified by TBEGIN is only stored, in one embodiment, when the TDB address is valid (ie, when the B1 field of the outermost TBEGIN instruction is non-zero). [0152] For aborts due to unfiltered program exception conditions, only one of PI-TDB or Intercept TDB will be stored. That way there can be zero, one or two TDBs stored for an abort. [0153] Additional details regarding an example of each of the TDBs are described below: [0154] TDB specified by TBEGIN: The 256-byte location specified by a valid transaction diagnostic block address. When the transaction diagnostic block address is valid, the TDB specified by TBEGIN is stored in a transaction abort. The TDB specified by TBEGIN is subject to all storage protection mechanisms that are in effect at the execution of the outermost TRANSACTION BEGIN statement. A PER (Program Event Recording) storage change event for any portion of the TDB specified by TBEGIN is detected during execution of the outermost TBEGIN, not during transaction abort processing. [0155] A PER function is to aid in program debugging. This allows the program to be alerted to the following types of events, as examples: • Successful execution of a branch instruction. The option is provided of having an event occur only when the branch target location is within the designated storage area.• Searching and loading an instruction from the designated storage area.• Changing the contents of the designated storage area. The option is provided of having an event occur only when the storage area is within designated address spaces.• Execution of a STORE USING REAL ADDRESS instruction.• Execution of the TRANSACTION END instruction. [0156] The program can selectively specify that one or more of the above event types be recognized, except that the event for STORE USING REAL ADDRESS can only be specified together with the store change event. Information regarding a PER event is provided to the program through a program interrupt, with the cause of the interrupt being identified in the interrupt code. [0157] When the transaction diagnostic block address is not valid, the TDB specified by TBEGIN is not stored. [0158] Program Interrupt TDB: Actual locations 6144-6399 (1800-18FF hex). The program interrupt TDB is stored when a transaction is aborted due to program interrupt. When a transaction is aborted due to other causes, the contents of the program interrupt TDB are unpredictable. [0159] The program interrupt TDB is not subject to any protection mechanism. PER storage change events are not detected for the program interrupt TDB when it is stored during a program interrupt. [0160] Intercept TDB: The actual 256-byte host location specified by state description locations 488-495. The intercept TDB is stored when an aborted transaction results in a guest program interrupt intercept (ie, intercept code 8). When a transaction is aborted due to other causes, the contents of the intercepting TDB are unpredictable. The intercept TDB is not subject to any protection mechanism. [0161] As shown in Figure 9, the fields of a transaction diagnostic block 900 are as follows, in one embodiment: [0162] Format 902: Byte 0 contains an indication of validation and format, as follows: Value Meaning0 The remaining fields of the TDB are unpredictable.1 A TDB of format-1, the remaining fields of which are described below.2-255 Reserved [0163] A TDB where the format field is zero is referred to as a null TDB. [0164] Flags 904: Byte 1 contains several indications, as follows: [0165] Conflict Token Validation (CTV): When a transaction is aborted due to a lookup and load or store conflict (i.e. abort codes 9 or 10 respectively), bit 0 of byte 1 is the indication of conflict card validation. When the CTV indication is one, the conflict token 910 at bytes 1623 of the TDB contains the logical address at which the conflict was detected. When the CTV indication is zero, bytes 16-23 of the TDB are unpredictable. [0166] When a transaction is aborted due to any reason other than a lookup and load or store conflict, bit 0 of byte 1 is stored as zero. [0167] Restricted Transaction Indication (CTI): When the CPU is in restricted transactional execution mode, bit 1 of byte 1 is set to one. When the CPU is in unconstrained transactional execution mode, bit 1 of byte 1 is set to zero. [0168] Reserved: Bits 2-7 of byte 1 are reserved and stored as zero. [0169] Transaction Grouping Depth (TND) 906: Bytes 6-7 contain the transaction grouping depth when the transaction was aborted. [0170] Transaction Abort Code (TAC) 908: Bytes 8-15 contain 64-bit unsigned transaction abort code. Each code point indicates a reason for a transaction to be aborted. [0171] It is model dependent if the transaction abort code is stored in the program interrupt TBD when a transaction is aborted due to conditions other than a program interrupt. [0172] Conflict Token 910: For transactions that abort due to lookup and load or store conflicts (i.e. abort codes 9 and 10 respectively), bytes 16-23 contain the logical address of the storage location in the which the conflict was detected. The conflict token is significant when the CTV bit, bit 0 of byte 1, is one. [0173] When the CTV bit is zero, bytes 16-23 are unpredictable. [0174] Because of speculative execution by the CPU, the conflict token may designate a storage location that would not necessarily be accessed by the transaction's conceptual execution sequence. [0175] Aborted Transaction Instruction Address (ATIA) 912: Bytes 24-31 contain an instruction address that identifies the instruction that was executed when an abort was detected. When a transaction aborts due to abort codes 2, 5, 6, 11, 13, or 256 or greater, or when a transaction aborts due to abort codes 4 or 13 and the program exception condition is aborted, ATIA points directly to the instruction being executed. When a transaction is aborted due to abort codes 4 or 12, and the program exception condition is not aborting, ATIA points to the instruction being executed. [0176] When a transaction is aborted due to abort codes 7-10, 14-16, or 255, ATIA does not necessarily indicate the exact instruction that caused the abort, but may point to an earlier or later instruction within the transaction. [0177] If a transaction is aborted due to an instruction that is the target of an execute-type instruction, ATIA identifies the execute-type instruction, pointing to an instruction or after the instruction, depending on the abort code as described above. ATIA does not indicate the target of the execute instruction. [0178] ATIA is subject to addressing mode when transaction aborts. In 24-bit addressing mode, bits 0-40 of the field contain zeros. In 31-bit addressing mode, bits 0-32 of the field contain zeros. [0179] It is model dependent if the aborted transaction instruction address is stored in the program interrupt TDB when a transaction is aborted due to conditions other than a program interrupt. [0180] When a transaction is aborted due to abort code 4 or 12, and the program exception condition is not aborting, ATIA does not point to the instruction causing the abort. By subtracting the number of halfwords indicated by the ATIA Interrupt Length Code (ILC), the instruction causing the abort can be identified for conditions that are suppressing or terminating, or for non-PER events that are completing. When a transaction is aborted due to a PER event, and no other program exception conditions are present, ATIA is unpredictable. [0181] When the transaction diagnostic block address is valid, the ILC can be examined in the program interrupt ID (PIID) in bytes 36-39 of the TDB specified by TBEGIN. When filtering does not apply, the CLI can be examined on PIID at location 140-143 in actual storage. [0182] Exception Access ID (EAID) 914: For transactions that abort due to certain filtered program exception conditions, byte 32 of the TDB specified by TBEGIN contains the exception access ID. In an example of the z/ Architecture, the format of the EAID and the cases by which it is stored are the same as those described in the actual location 160 when the exception condition results in an interrupt, as described in the Operation Principles incorporated by reference above. [0183] For transactions that abort for other reasons, including any exception conditions that result in a program interrupt, byte 32 is unpredictable. Byte 32 is unpredictable in the program interrupt TDB. [0184] This field is stored only in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved. EAID is stored only for DAT protection program or access list controlled, ASCE type, page translation, region first translation, region second translation, region third translation and translation exception conditions of segment. [0185] Data Exception Code (DXC) 916: For transactions that abort due to filtered data exception program exception conditions, byte 33 of the TBD specified by TBEGIN contains the data exception code. In an example of the z/ Architecture, the format of the DXC and the cases by which it is stored are the same as those described in the actual location 147 when the exception condition results in an interrupt, as described in the Operating Principles incorporated by reference above . In one example, location 147 includes DXC. [0186] For transactions that abort for other reasons, including any exception conditions that result in a program interrupt, byte 33 is unpredictable. Byte 33 is unpredictable in the program interrupt TDB. [0187] This field is only stored in the TDB designated by the transaction diagnostic block address; on the contrary, the field is reserved. DXC is only stored for data program exception conditions. [0188] Program Interrupt ID (PIID) 918: For transactions that abort due to filtered program exception conditions, bytes 36-39 of the TDB specified by TBEGIN contain the program interrupt ID. In an example of the z/ Architecture, the format of the PIID is the same as that described in actual locations 140-143 when the condition results in an interrupt (as described in the Operating Principles incorporated by reference above), except that the length code instruction in bits 13-14 of the PIID refers to the instruction in which the exception condition was caught. [0189] For transactions that abort for other reasons, including exception conditions that result in a program interrupt, bytes 36-39 are unpredictable. Bytes 36-39 are unpredictable in the program interrupt TDB. [0190] This field is only stored in the TDB designated by the transaction diagnostic block address; on the contrary, the field is reserved. The program interrupt ID is only stored for program exception conditions. [0191] Translation Exception ID (TEID) 920: For transactions that abort due to any of the following filtered program exception conditions, bytes 40-47 of the TDB specified by TBEGIN contain the translation exception ID.• DAT protection or access list controlled• ASCE type• Page translation• First region translation• Second region translation• Third region translation• Segment translation exception [0192] In an example of the z/ Architecture, the format of the TEID is the same as that described in actual locations 168-175 when the condition results in an interrupt, as described in the Operating Principles incorporated by reference above. [0193] For transactions that abort for other reasons, including exception conditions that result in a program interrupt, bytes 40-47 are unpredictable. Bytes 40-47 are unpredictable in the program interrupt TDB. [0194] This field is only stored in the TDB designated by the transaction diagnostic block address; on the contrary, the field is reserved. [0195] Burst Event Address 922: For transactions that abort due to filtered program exception conditions, bytes 48-55 of the TDB specified by TBEGIN contains the burst event address. In an example of the z/ Architecture, the format of the burst event address is the same as that described in actual locations 272-279 when the condition results in an interruption, as described in the Operating Principles incorporated by reference above. [0196] For transactions that abort for other reasons, including exception conditions that result in a program interrupt, bytes 48-55 are unpredictable. Bytes 48-55 are unpredictable in the program interrupt TDB. [0197] This field is stored only in the TBD designated by the transaction diagnostic block address; on the contrary, the field is reserved. [0198] Additional details regarding burst events are described below. [0199] In an embodiment of the z/ Architecture, when the PER-3 facility is installed, it provides the program with the address of the last instruction to generate a break in the sequential execution of the CPU. Recording the break event address can be used as a debugging aid for natural branch detection. This facility provides, for example, a 64-bit register in the CPU, called a burst event address register. Whenever an instruction other than TRANSACTION ABORT causes a break in sequential instruction execution (that is, the instruction address in the PSW is replaced, rather than increased by the instruction length), the address of that instruction is placed in the address register. break event. Whenever a program break occurs, whether or not PER is indicated, the current contents of the break event address register are placed in actual storage locations 272279. [0200] If the instruction causing the break event is the target of an execute-type instruction (EXECUTE or EXECUTE RELATIVE LONG), then the instruction address used to look up and load the execute-type instruction is placed in the register of burst event address. [0201] In an embodiment of the z/ Architecture, a break event is considered to occur whenever one of the following instructions generates a branch: BRANCH AND LINK (BAL, BALR); BRANCH AND SAVE (BAS, BASR); BRANCH AND SAVEAND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON CONDITION (BC, BCR); BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); BRANCH ON INDEX HIGH (BXH, BXHG); BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); BRANCH RELATIVE ON CONDITION (BRC); BRANCH RELATIVE ON CONDITION LONG (BRCL); BRANCH RELATIVE ON COUNT (BRCT, BRCTG); BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); COMPARE AND BRANCH (CRB, CGRB); COMPARE AND BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ). [0202] A break event is also considered to occur whenever one of the following instructions completes: BRANCH AND SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); RESUME PROGRAM (RP); and TRAP (TRAP2, TRAP4). [0203] A break event is not considered to occur as a result of a transaction being aborted (either implicitly or as a result of the TRANSACTION ABORT statement). [0204] Model Dependent Diagnostic Information 924: Bytes 112-127 contain model dependent diagnostic information. [0205] For all abort codes except 12 (filtered program interrupt), model dependent diagnostic information is saved in each TDB where it is stored. [0206] In one embodiment, the model-dependent diagnostic information includes the following: • Bytes 112-119 contain a 64-bit vector called transactional execution branch indications (TXBI). Each of the first 63 bits of the array indicates the results of executing a branch instruction while the CPU was in transactional execution mode, as follows: Value Meaning0 The completed instruction without branch.1 The completed instruction with branch. [0207] Bit 0 represents the result of said first branch instruction, bit 1 represents the result of said second instruction, and so on. [0208] If fewer than 63 branch instructions are executed while the CPU is in transactional execution mode, the rightmost bits that do not correspond to branch instructions are set to zero (including bit 63). When more than 63 branch instructions are executed, bit 63 of the TXBI is set to one. [0209] Bits in the TXBI are set by instructions that are capable of causing a burst event, as listed above, with the exception of the following:- Any constrained instruction does not cause a bit to be set in the TXBI.- For instructions , for example, of the z/ Architecture, when the M1 field of the BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, or BRANCH RELATIVE ON CONDITION LONG instruction is zero or when the R2 field of the following instructions is zero, it is model-dependent if the execution of the instruction causes a bit to be set in the TXBI.- BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); and BRANCH ON COUNT (BCTR, BCTGR).- For abort conditions that are caused by a host access exception, bit position 0 of byte 127 is set to one. For all other abort conditions, bit position 0 of byte 127 is set to zero.- For abort conditions that are detected by the load/storage unit (LSU), the rightmost five bits of byte 127 contain a indication of the cause. For abort conditions that are not detected by the LSU, byte 127 is reserved. [0210] General Registers 930: Bytes 128-255 contain the contents of general registers 0-15 at the time the transaction was aborted. Registers are stored in ascending order, starting with general register 0 at bytes 128135, general register 1 at bytes 136-143, and so on. [0211] Reserved: All other fields are reserved. Unless otherwise stated, the contents of reserved fields are unpredictable. [0212] As noted by other CPUs and the I/O subsystem, the TDB(s) storing during a transaction abort is a multiple access reference that occurs after any non-transactional stores. [0213] A transaction may abort due to causes that are outside the scope of the immediate configuration in which it executes. For example, transient events recognized by a hypervisor (such as LPAR or z/VM) can cause a transaction to abort. [0214] The information provided in the transaction diagnostic block is intended for diagnostic purposes and is substantially correct. However, because an abort may have been caused by an event outside the scope of the immediate configuration, information such as the abort code or program stop ID may not accurately reflect conditions within the configuration and, therefore, may not should be used in determining program action. [0215] In addition to the diagnostic information saved in the TBD, when a transaction is aborted due to any data exception program exception condition and both the AFP control register, bit 45 of control register 0, and the control register effective floating-point operation permission (F) is one, the data exception code (DXC) is placed in byte 2 of the FPCR floating-point control register), regardless of whether the filtering applies to the program exception condition . When a transaction is aborted and one or both of the AFP register control or effective floating point operation permission control is zero, the DXC is not placed in the FPCR. [0216] In one embodiment, as indicated in this document, when the transactional execution facility is installed, the following general instructions are provided. • EXTRACT TRANSACTION NESTING DEPTH• NONTRANSACTIONAL STORE• TRANSACTION ABORT• TRANSACTION BEGIN• TRANSACTION END [0217] When the CPU is in transactional execution mode, tentative execution of certain instructions is restricted and causes the transaction to abort. [0218] When issued in constrained transactional execution mode, tentative execution of constrained instructions may also result in a transaction constrained program interrupt or may result in execution proceeding as if the transaction were unconstrained. [0219] In an example of the z/ Architecture, the restricted instructions include, as examples, the following non-privileged instructions: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), when the code in the M1 field is 6 or 7; STORE CHARACTERS UNDER MASK HIGH, when the M3 field is zero and the code in the R1 field is 6 or 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; CALL SUPERVISOR; and TEST RUNTIME INSTRUMENTATION CONTROLS. [0220] In the list above, COMPARE AND SWAP AND STORE and PERFORM LOCKED OPERATION are complex instructions that can be more efficiently implemented by using basic instructions in TX mode. The cases for PREFETCH DATA and PREFETCH DATA RELATIVE LONG are restricted because codes 6 and 7 free a line of cache memory, potentially requiring data to be committed before a transaction can complete. SUPERVISOR CALL is constrained because it causes an interrupt (which causes a transaction to abort). [0221] Under the conditions listed below, the following instructions are restricted:• BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR), and BRANCH AND SAVE AND SET MODE, when the R2 field of the instruction is non-zero and tracking branching is allowed.• BRANCH AND SAVE AND SET MODE and BRANCH AND SET MODE, when the R2 field is non-zero and mode tracking is allowed; SET ADDRESSING MODE, when mode tracking is allowed. • MONITOR CALL, when a monitoring event condition is recognized. [0222] The above list includes instructions that can form trace entries. If these statements are allowed to execute transactionally and form trace entries, and the transaction is subsequently aborted, the trace table pointer in control record 12 must advance, but the stores for the trace table must be discarded. This leaves an inconsistent gap in the trace table; therefore, instructions are restricted in cases where they must form trace entries. [0223] When the CPU is in transactional execution mode, it is model dependent if the following instructions are constrained: CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT UNICODE-16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE 8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; PERFORM CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; and RUNTIME INSTRUMENTATION ON. [0224] Each of the above instructions is currently implemented by the hardware coprocessor or was on earlier machines and is therefore considered restricted. [0225] When the effective control of AR modification permission (A) is zero, the following instructions are restricted: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; and SET ACCESS. [0226] Each of the above instructions causes the contents of an access record to be modified. If control A in the TRANSACTION BEGIN statement is zero, then the program has explicitly indicated that access record modification should not be allowed. [0227] When the effective control of floating point operation permission (F) is zero, floating point instructions are restricted. [0228] Under certain circumstances, the following instructions may be restricted: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; and STORE CLOCK FAST. [0229] Each of the above instructions is subject to an intercept control in the interpretive execution state description. If the hypervisor has configured intercept control for these instructions, then their execution may be lengthy due to the hypervisor implementation; therefore, they are considered restricted if an intercept occurs. [0230] When an unconstrained transaction is aborted due to tentative execution of a constrained instruction, the transaction abort code in the transaction diagnostic block is set to 11 (constrained instruction), and the condition code is set to 3 , except as follows: when an unconstrained transaction is aborted due to tentative execution of an instruction that would otherwise result in a privileged operation exception, it is unpredictable if the abort code is set to 11 (constrained instruction) or 4 ( unfiltered program interrupt resulting from recognition of privileged operation program interrupt). When an unconstrained transaction is aborted due to attempted execution of PREFETCH DATA (RELATIVE LONG) when the code in the M1 field is 6 or 7 or STORE CHARACTERS UNDER MASK HIGH when the M3 field is zero and the code in the R1 field is 6 or 7 , it is unpredictable if the abort code is set to 11 (strict instruction) or 16 (other cache). When an unconstrained transaction is aborted due to the attempted execution of MONITOR CALL and both a monitoring event condition and a specification exception condition are present, it is unpredictable if the abort code is set to 11 or 4 or if the interrupt of program is filtered, 12. [0231] Additional instructions can be constrained in a constrained transaction. While these instructions are not currently defined as constrained in an unconstrained transaction, they may be constrained under certain circumstances in an unconstrained transaction on future processors. [0232] Certain restricted instructions may be allowed in transactional execution mode on future processors. Therefore, the program should not trust the transaction being aborted due to the tentative execution of a constrained instruction. The TRANSACTION ABORT statement must be used to reliably cause a transaction to abort. [0233] In an unconstrained transaction, the program must provide an alternative non-transactional code path to accommodate a transaction that aborts due to a constrained instruction. [0234] In operation, when transaction grouping depth is zero, execution of the TRANSACTION BEGIN (TBEGIN) instruction resulting in condition code zero causes the CPU to enter unconstrained transactional execution mode. When the transaction grouping depth is zero, execution of the constrained TRANSACTION BEGIN (TBEGINC) instruction resulting in condition code zero causes the CPU to enter constrained transactional execution mode. [0235] Except where explicitly stated otherwise, all rules that apply to non-transactional execution also apply to transactional execution. Below are additional processing characteristics while the CPU is in transactional execution mode. [0236] When the CPU is in unconstrained transactional execution mode, execution of the TRANSACTION BEGIN instruction resulting in condition code zero causes the CPU to remain in unconstrained transactional execution mode. [0237] As noted by the CPU, lookups and loads and stores done in transaction execution mode are no different from those done outside transactional execution mode. As noted by other CPUs and the I/O subsystem, all storage operand accesses made while the CPU is in transactional execution mode appear to be a single-block concurrent access. That is, accesses to all bytes within a halfword, word, doubleword, or foursquare word are specified to appear to be simultaneous in block as observed by other CPUs and I/O programs (eg, channel). The half word, word, double word, or foursquare word is referred to in this section as a block. When a search and load reference is specified to appear to be simultaneous within a block, no storage access to the block by another CPU or I/O program is allowed during the time the bytes contained in the block are being searched and loaded. . When a storage-type reference is specified to appear to be concurrent within a block, no access to the block, whether search and load or store, is allowed by another CPU or I/O program for as long as the bytes within the block are being stored. [0238] Storage accesses for instruction and lookup and table loading DAT and ART (Access Register Table) follow non-transactional rules. [0239] The CPU exits transactional execution mode normally via a TRANSACTION END instruction which causes the transaction grouping depth to transition to zero, in which case the transaction ends. [0240] When the CPU leaves transactional execution mode upon completion of a TRANSACTION END instruction, all storage done while in transactional execution mode is committed; that is, the stores appear to occur as a simultaneous single-block operation as observed by other CPUs and the I/O subsystem. [0241] A transaction can be implicitly aborted for a variety of causes or can be explicitly aborted by the TRANSACTION ABORT instruction. Examples of possible causes of a transaction abort, the corresponding abort code, and the condition code that is placed in the transaction abort PSW are described below. [0242] External Interrupt: Transaction abort code is set to 2 and condition code in transaction abort PSW is set to 2. Transaction abort PSW is stored as external old PSW as a processing part of external interruption. [0243] Program Interrupt (Unfiltered): A program exception condition that results in an interrupt (ie, an unfiltered condition) causes the transaction to abort with code 4. The condition code in the abort PSW transaction is configured specific to the program interrupt code. The transaction abort PSW is stored as the old program PSW as a part of program interrupt processing. [0244] An instruction that would otherwise result in a transaction being aborted due to an operation exception may yield alternative results: for an unconstrained transaction, the transaction can abort with abort code 11 (constrained instruction); for a constrained transaction, a transaction constrained program interrupt may be recognized instead of the operation exception. [0245] When a PER (Program Event Recording) event is acknowledged together with any other unfiltered program exception condition, the condition code is set to 3. [0246] Machine Check Abort: The transaction abort code is set to 5 and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as the old machine check PSW. machine as a part of machine check interrupt processing. [0247] Interrupt I/O: The transaction abort code is set to 6 and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as the old I/O PSW as a part of interrupt I/O processing. [0248] Search and Load Overrun: A search and load overrun condition is detected when the transaction attempts to lookup and load more locations than the CPU supports. Transaction abort code is set to 7 and condition code is set to 2 or 3. [0249] Storage Overrun: An overrun condition is detected when the transaction attempts to store in more locations than the CPU can handle. Transaction abort code is set to 8 and condition code is set to 2 or 3. [0250] Allowing the condition code to be 2 or 3 in response to a storage overflow or search and load abort allows the CPU to potentially indicate retry situations (e.g., condition code 2 indicates that the re-execution of the transaction can be productive; while condition code 3 does not recommend re-execution). [0251] Lookup and Load Conflict: A lookup and load conflict condition is detected when another CPU or I/O subsystem attempts to store to a location that has been transactionally polled and loaded by that CPU. Transaction abort code is set to 9 and condition code is set to 2. [0252] Storage Conflict: A storage conflict condition is detected when another CPU or I/O subsystem attempts to access a location that has been stored during transactional execution by that CPU. Transaction abort code is set to 10 and condition code is set to 2. [0253] Constrained instruction: When the CPU is in transactional execution mode, tentative execution of a constrained instruction causes the transaction to abort. Transaction abort code is set to 11 and condition code is set to 3. [0254] When the CPU is in transactional constrained execution mode, it is unpredictable whether the tentative execution of a constrained instruction results in a transaction constrained program interrupt or an abort due to a constrained instruction. The transaction is still aborted, but the abort code may indicate the cause. [0255] Program Exception Condition (Filtered): A program exception condition that does not result in an interrupt (that is, a filtered condition) causes the transaction to abort with a transaction abort code of 12. condition code is set to 3. [0256] Cluster Depth Exceeded: A cluster depth exceeded condition is detected when the transaction cluster depth is at the maximum value allowed for the configuration, and a TRANSACTION BEGIN instruction is executed. The transaction is aborted with a transaction abort code of 13 and the condition code is set to 3. [0257] Cache Search and Load Related Condition: A condition related to storage locations searched and loaded by the transaction is detected by the CPU's cache memory circuit. The transaction aborts with a transaction abort code of 14, and the condition code is set to 2 or 3. [0258] Cache Storage Related Condition: A condition related to storage locations stored by the transaction is detected by the CPU's cache memory circuit. The transaction is aborted with a transaction abort code of 15, and the condition code is set to 2 or 3. [0259] Other Cache Memory Condition: Another cache memory condition is detected by the CPU's cache memory circuit. The transaction aborts with a transaction abort code of 16, and the condition code is set to 2 or 3. [0260] During transactional execution, whether the CPU accesses instructions or storage operands using different logical addresses that map to the same absolute address is model dependent if the transaction aborts. If the transaction aborts due to accesses using different logical addresses mapped to the same absolute address, abort code 14, 15 or 16 is set depending on the condition. [0261] Miscellaneous Condition: A miscellaneous condition is any other condition recognized by the CPU that causes the transaction to abort. Transaction abort code is set to 255 and condition code is set to 2 or 3. [0262] When multiple configurations run on the same machine (eg logical partitions or virtual machines), a transaction may abort due to an external machine check or I/O interrupt that occurred in a different configuration. [0263] Although examples are provided above, other causes of a transaction abort with abort codes and corresponding condition codes can be provided. For example, one cause might be a Restart Interrupt, where the transaction abort code is set to 1, and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as the old reset PSW as a part of reset processing. As an additional example, a cause could be a Supervisor Call condition, where the abort code is set to 3 and the condition code in the transaction abort PSW is set to 3. Other or different examples are also possible. [0264] Notes: 1. The miscellaneous condition can result from any of the following: • Statements, such as, in the z/ Architecture, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION, where NQ control is zero and SK control is one, SET STORAGE KEY EXTENDED, where NQ control is zero, performed by another CPU in the configuration; the condition code is set to 2.• An operator function, such as reset, reset, or stop, or the equivalent SIGNAL PROCESSOR order is executed on the CPU.• Any other condition not enumerated above; the condition code is set to 2 or 3.2. The location where lookup and load and store conflicts are detected can be anywhere within the same cache memory line.3. Under certain conditions, the CPU may not be able to distinguish between similar abort conditions. For example, a search and load or storage capacity overflow may be imperceptible from a respective search and load or storage conflict.4. Speculative execution of multiple instruction paths by the CPU can result in a transaction being aborted due to conflict or overflow conditions, even if such conditions do not occur in the conceptual sequence. While in constrained transactional execution mode, the CPU can temporarily inhibit speculative execution, allowing the transaction to attempt to complete without speculatively detecting such conflicts or overruns. [0265] Execution of a TRANSACTION ABORT instruction causes the transaction to abort. The transaction abort code is set from the second operand address. The condition code is set to 2 or 3, depending on whether bit 63 of the second operand address is zero or one, respectively. [0266] Figure 10 summarizes examples of abort codes stored in the transaction diagnostic block and the corresponding condition code (CC). The description in figure 10 illustrates a particular implementation. Other implementations and encodings of values are possible. [0267] In one embodiment, and as mentioned above, the transaction facility provides for both constrained and unconstrained transactions, as well as processing associated with them. Initially, restricted transactions are discussed, and then unrestricted transactions. [0268] A constrained transaction runs in transactional mode without a rollback path. This is a useful processing mode for compact functions. In the absence of repeated interrupts or conflicts with other CPUs or the I/O subsystem (ie, caused by conditions that will not allow the transaction to complete successfully), a constrained transaction will eventually complete; therefore, a miscarriage handling routine is not required and is not specified. For example, in the absence of violation of a condition that cannot be addressed (eg, divide by 0); a condition that does not allow the transaction to complete (for example, a timer interrupt that does not allow an instruction to run; a hot I/O; etc.); or a violation of a restriction or impediment associated with a restricted transaction, the transaction will eventually complete. [0269] A constrained transaction is initiated by a constrained TRANSACTION BEGIN (TBEGINC) statement when the transaction grouping depth is initially zero. A constrained transaction is subject to the following constraints in an embodiment.1. The transaction executes no more than 32 statements, not including the strict TRANSACTION BEGIN (TBEGINC) and TRANSACTION END.2 statements. All statements in the transaction must be within 256 contiguous bytes of storage, including constrained TRANSACTION BEGIN (TBEGINC) statements and any TRANSACTION END.3. In addition to the restricted statements, the following restrictions apply to a restricted transaction.a. Instructions are limited to those referred to as General Instructions, including, for example, adding, subtracting, multiplying, dividing, swapping, rotating, etc.b. Branch instructions are limited to the following (the instructions listed are from the z/ Architecture in one example):• BRANCH RELATIVE ON CONDITION, where the M1 field is non-zero and the RI2 field contains a positive value.• BRANCH RELATIVE ON CONDITION LONG, where the M1 field is non-zero and the RI2 field contains a positive value that does not cause address involvement.• COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, where the M3 field is non-zero and the RI4 field contains a positive value. (That is, only forward branches with non-zero branch masks.) c. Except for TRANSACTION END and instructions that generate a specified operand serialization, instructions that generate a serialization function are restricted.d. Store-and-store (SS-) operations and store-and-store operations with extended opcode instructions (SSE-) are restricted.e. All of the following general statements (which are from the z/ Architecture in this example) are restricted: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT TO BINARY; CONVERT TO DECIMAL; CONVERT UNICODE-16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; DIVIDE; DIVIDE LOGICAL; SINGLE SPLIT; RUN; RUN RELATIVE LONG; EXTRACT CACHE ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOAD AND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUADWORD; CALL MONITOR; LONG MOVE; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH, when the M3 field is zero, and the code in the R1 field is 6 or 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (both TBEGIN and TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; and TRANSLATE TWO TO TWO.4. Transaction storage operands access no more than four octopwords. Note: LOAD ON CONDITION and STORE ON CONDITION are considered for reference storage regardless of condition code. An octopword is, for example, a group of 32 consecutive bytes on a 32-byte boundary. 5. Transactions running on this CPU, or stores by other CPUs or the I/O subsystem, do not access storage operands in any 4K-byte blocks that contain the 256 bytes of storage starting with the constrained TRANSACTION BEGIN (TBEGINC) instruction ).6. The transaction does not access instructions or storage operands using different logical addresses that map to the same absolute address.7. Operand references made by the transaction must be within a single double word, except that for LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, and STORE MULTIPLE HIGH, the operand references must be within a single octoword. [0270] If a constrained transaction violates any of the constraints 1-7 listed above, then either (a) a constrained transaction program interrupt is acknowledged or (b) execution proceeds as if the transaction were not constrained, except that constrained violations additional data may still result in a transaction-constrained program interruption. It is unpredictable what action is taken and the action taken may differ based on which constraint is violated. [0271] In the absence of constrained violations, repeated interrupts, or conflicts with other CPUs or the I/O subsystem, a constrained transaction will eventually complete as described above.1. The chance of successfully completing a restricted transaction improves if the transaction meets the following criteria: a. The instructions issued are less than the maximum of 32.b. Storage operand references are less than the maximum of 4 octopwords.c. Storage operand references are on the same memory line cache.d. Storage operand references to the same locations occur in the same order across all transactions.2. A constrained transaction is not necessarily guaranteed to complete successfully on its first run. However, if a constrained transaction that does not violate any of the listed constraints is aborted, the CPU employs circuitry to ensure that repeated execution of the transaction is subsequently successful.3. Within a constrained transaction, TRANSACTION BEGIN is a constrained statement, so a constrained transaction cannot be grouped. 4. Violation of any of the above constraints 1-7 by a constrained transaction may result in a program loop.5. The limitations of a constrained transaction are similar to those of a compare-and-exchange loop. Because of potential interference from other CPUs and the I/O subsystem, there is no architectural guarantee that the COMPARE AND SWAP instruction will complete with condition code 0. A constrained transaction can suffer from similar interference in the form of conflict aborts. search and load and storage or hot outages. The CPU employs fairness algorithms to ensure that, in the absence of any constrained violations, a constrained transaction will eventually complete.6. In order to determine the number of repeated iterations required to complete a constrained transaction, the program may employ a counter on a general register that is not subject to the general register save mask. An example is shown below.LH1 15.00 Retry counter zeroLoopTBEGINC 0(0),X 'FE00' Conserve GRs 0-13 AHI 15.1 Increment counterRestricted transactional execution codeTEND End of transaction*R15 now contains repeated transactional retries account . [0272] Note that both registers 14 and 15 are not restored in this example. Also note that, on some models, the counter in general register 15 may be low if the CPU detects the abort condition after the TBEGINC instruction ends, but before the AHI instruction ends. [0273] As noted by the CPU, lookups and loads and stores done in transactional execution mode are no different from those done outside of transaction execution mode. [0274] In one embodiment, the user (ie, the one who creates the transaction) selects whether or not a transaction should be restricted. One embodiment of the logic associated with the processing of constrained transactions, and in particular the processing associated with a TBEGINC instruction, is described with reference to Figure 11. Execution of the TBEGINC instruction causes the CPU to enter constrained transactional execution mode or remain in unrestricted execution mode. The CPU (i.e. the processor) executing TBEGINC executes the logic in Figure 11. [0275] Referring to Figure 11, based on the execution of a TBEGINC instruction, a serialization function is executed, STEP 1100. A serialization function or operation includes completing all conceptually previous storage accesses (and, for Architecture z /, as an example, related bit-shift and reference bit settings) by the CPU, as noted by other CPUs and the I/O subsystem, before conceptually subsequent storage accesses (and shift-bit and bit-settings related benchmarks) occur. Serialization affects the sequence of all CPU accesses to storage and to storage keys, except for those associated with ART table entry lookup and load and DAT table entry. [0276] As noted by the CPU in transactional execution mode, serialization operates normally (as described above). As noted by other CPUs and the I/O subsystem, a serialization operation performed while the CPU is in transactional execution mode occurs when the CPU leaves transactional execution mode, either as a result of a TRANSACTION END instruction that decreases depth. transaction grouping to zero (normal termination) or as a result of the transaction being aborted. [0277] After serialization is performed, a determination is made as to whether an exception is recognized, INQUIRY 1102. If positive, the exception is handled, STEP 1104. For example, a special operation exception is recognized and the operation is suppressed if transactional execution control, bit 8 of control register 0, is 0. As additional examples, a specification exception is recognized and the operation is suppressed if field B1, bits 1619 of the instruction, is non-zero; an execution exception is recognized and the operation is suppressed if TBEGINC is the target of an execute instruction; and an operation exception is recognized and the operation is suppressed if the transactional execution facility is not installed in the configuration. If the CPU is already in constrained transaction execution mode, then a constrained transaction exception program exception is recognized and the operation is suppressed. Also, if the transaction collation depth, when incremented by 1, exceeds a model-dependent maximum transaction collation depth, the transaction is aborted with abort code 13. Other or different exceptions may be recognized and handled. However, if there is no exception, then a determination is made for whether the transaction cluster depth is zero, INQUIRY 1106. If the transaction cluster depth is zero, then the transaction diagnostic block address is considered invalid, STEP 1108; the transaction-abort PSW is configured from the contents of the current PSW, except that the instruction address of the transaction-abort PSW designates the TBEGINC instruction, rather than the next sequential instruction, STEP 1110; and the contents of the general register pairs as designated by the general register save mask are saved in a model-dependent location that is not directly accessible by the program, STEP 1112. In addition, the nesting depth is set to 1, STEP 1114. Additionally, the effective values of the floating point operation permission (F) and program interrupt filtering controls (PIFC) are set to zero, STEP 1316. In addition, the effective value of the AR modification control permission (A ), 12-bit field of the instruction's I2 field, is determined, STEP 1118. For example, effective control A is the logical AND of control A in the TBEGINC instruction to the current level and to any external TBEGIN instructions. [0278] Going back to INQUIRY 1106, if the transaction grouping depth is greater than zero, then the grouping depth is incremented by 1, STEP 1120. Also, the effective value of the floating point permission operation (F ) is set to zero and the effective value of the program interrupt filtering control (PIFC) is unchanged, STEP 1122. Processing then continues with STEP 1118. In one embodiment, a successful initiation of the transaction results in the condition code 0. This completes a realization of the logic associated with executing a TBEGINC instruction. [0279] In one embodiment, the exception checking provided above may occur in multiple orders. A particular order for exception checking is as follows:- Exceptions with the same priority as the priority of program interrupt conditions for the general case.- Specification exception due to field B1 containing a non-zero value.- Abort due to to excess transaction grouping depth.- Condition code 0 due to normal completion. [0280] - Additionally, the following applies in one or more embodiments: 1. Records designated to be saved by the general record save mask are only restored if the transaction aborts, not when the transaction ends normally via TRANSACTION END. Only records assigned by GRSM from the outermost TRANSACTION BEGIN statement are restored on abort. Field I2 must designate all record pairs that provide input values that are changed by a constrained transaction. That way, if the transaction is aborted, the input registry values will be restored to their original contents when the constrained transaction is re-executed.2. In most models, better performance can be achieved, both on TRANSACTION BEGIN and when a transaction aborts, by specifying the minimum number of records needed to be saved and restored in the general record save mask.3. The following illustrates the results of the TRANSACTION BEGIN instruction (both TBEGIN and TBEGINC) based on the current transaction grouping depth (TND) and, when the TND is non-zero, whether the CPU is in constrained transactional execution mode or not. Restricted: Instruction TND=0TBEGIN Enters unrestricted transactional execution modeTBEGINC Enters restricted transactional execution mode Explanation:CTX CPU is in constrained transactional execution modeNTX CPU is in unconstrained transactional execution modeTND Transaction cluster depth at start of instruction [0281] As described in this document, in one aspect, a constrained transaction is guaranteed completion, assuming it does not contain a condition that renders it incapable of completion. To ensure its completion, the processor (eg CPU) executing the transaction may take certain actions. For example, if a constrained transaction has an abort condition, the CPU may temporarily: (a) inhibit out-of-order execution; (b) inhibit other CPUs from accessing the conflicting storage locations; (c) induce random delays in processing abortion; and/or (d) invoke other measures to facilitate successful completion. [0282] To summarize, the processing of a constrained transaction is as follows:• If already in constrained TX mode, a constrained transaction exception is recognized.• If current TND (Transaction Pool Depth) > 0, execution proceeds as unrestricted transaction. • Effective control of F set to zero.• Effective PIFC is unchanged.• Allows external unrestricted TX to trigger service function that may or may not use restricted TX.• If current TND = 0:• Transaction diagnostic block address is invalid - No instruction-specified TDB stored in abort • Transaction abort PSW set to address of TBEGINC- Not the next sequential instruction • General register pairs assigned by GRSM saved in a model-dependent location not accessible by the program• Transaction token optionally formed (from operand D2). The transaction token is a transaction identifier. May be equal to storage operand address or other value. • Effective A = TBEGINC A & any external A• Incremented TND• If TND transitions from 0 to 1, CPU enters restricted TX mode• Otherwise, CPU remains in unrestricted TX mode • Instruction complete with CC0• Exceptions:• Specification exception (PIC (Program Interrupt Code) 0006) if field B1 is non-zero• Special operation exception (PIC 0013 hex) if execution control (CR0.8) is zero• Transaction constraint exception (PIC 0018 hex) if issued in strict TX mode• Operation exception (PIC 0001) if constrained transactional execution facility is not installed• Execute exception (PIC 0003 ) if the instruction is the target of an execute instruction type • Abort code 13 if grouping depth exceeded • Abort conditions in constrained transaction:• Abort PSW points to TBEGINC instruction- Not the following instruction- Abort condition does with all the TX being re enabled* No failure path • CPU takes special measures to ensure successful completion of relationship • Assuming no persistent conflict, interrupt, or constrained violation, transaction is assured of eventual completion.• Restricted Violation:• PIC 0018 hex - indicates transaction constraint violation• Or transaction runs as unconstrained [0283] As described above, in addition to constrained transaction processing, which is optional, in one embodiment, the transactional facility also provides for unconstrained transaction processing. Additional details regarding the processing of unconstrained transactions, and in particular the processing associated with a TBEGIN instruction, are described with reference to Figure 12. Execution of the TBEGIN instruction causes the CPU to enter or remain in non-constrained transactional execution mode. restricted. The CPU (i.e., the processor) that executes TBEGIN executes the logic in Figure 12. [0284] Referring to figure 12, based on the execution of the TBEGIN instruction, a serialization function (described above) is executed, STEP 1200. Subsequent to the serialization execution, a determination is made as to whether an exception is recognized, INQUIRY 1202 If positive, then the exception is handled, STEP 1204. For example, a special operation exception is recognized and the operation is suppressed if transactional execution control, bit 8 of control register 0, is zero. Also, a specification exception is recognized and the operation is suppressed if the program interrupt filtering control, bits 1415 of the I2 field of the instruction, contains the value 3; or the first operand address does not designate a double-word boundary. An operation exception is recognized and the operation is suppressed if the transactional execution facility is not installed in the configuration; and an execution exception is recognized and the operation is suppressed if TBEGIN is the target of an execute instruction. Additionally, if the CPU is in constrained transactional execution mode, then a constrained transaction exception program exception is recognized and the operation is suppressed. Also, if the transaction collation depth, when incremented by 1, exceeds a model-dependent maximum transaction collation depth, the transaction is aborted with abort code 13. [0285] Also, when the B1 field of the instruction is non-zero and the CPU is not in transactional execution mode, i.e., transaction clustering depth is zero, then storage accessibility to the first operand is determined . If the first operand cannot be accessed for stores, then an access exception is recognized and the operation is aborted, suppressed, or terminated, depending on the specific access exception condition. Additionally, any PER storage change event for the first operand is acknowledged. When the B1 field is non-zero and the CPU is already in transactional execution mode, it is unpredictable if storage accessibility to the first operand is determined, and PER storage change events are detected for the first operand. If field B1 is zero, then the first operand is not accessed. [0286] In addition to exception checking, a determination is made as to whether the CPU is in transactional execution mode (ie, transaction cluster depth is zero), INQUIRY 1206. If the CPU is not in transactional execution mode , then the contents of selected general register pairs are saved, STEP 1208. In particular, the contents of general register pairs designated by the general register save mask are saved in a model-dependent location, i.e. not directly accessible by the program. [0287] In addition, a determination is made for if the B1 field of the instruction is zero, INQUIRY 1210. If the B1 field is not equal to zero, the first operand address is placed in the transaction diagnostic block address, STEP 1214, and the transaction diagnostic block address is valid. Also, the transaction-abort PSW is configured from the contents of the current PSW, STEP 1216. The instruction address of the transaction-abort PSW designates the next sequential instruction (ie, the instruction after the outermost TBEGIN). [0288] In addition, a determination is made of the effective value of the AR Modify Permission Control (A), bit 12 of field I2 of the instruction, STEP 1218. The effective control A is the logical AND of control A in the TBEGIN instruction. for the current level and for all external levels. Additionally, an effective value of the floating point run permission control (F), bit 13 of the I2 field of the instruction, is determined, STEP 1220. The effective control F is the logical AND of the control F in the TBEGIN instruction to the current level. and for all external levels. Also, an effective value of the program interrupt filtering control (PIFC), bits 14-15 of the I2 field of the instruction, is determined, STEP 1222. The effective value of PIFC is the highest value in the TBEGIN instruction for the level current and for all external levels. [0289] Additionally, a value of one is added to the transaction grouping depth, STEP 1224, and the instruction completes with condition code setting 0, STEP 1226. If the transaction grouping depth transitions from zero to one, the CPU enters unconstrained transactional execution mode; otherwise, the CPU remains in unconstrained transactional execution mode. [0290] Going back to INQUIRY 1210, if B1 equals zero, then the transaction diagnostic block address is invalid, STEP 1211, and processing continues with STEP 1218. Similarly, if the CPU is in execution mode transaction, INQUIRY 1206, processing continues with STEP 1218. [0291] Condition Code Resulting from TBEGIN execution includes, for example:0 Successful Transaction Start1 -2 -3 - [0292] Program Exceptions include, for example:• Access (storage, first operand)• Operation (transactional execution facility not installed)• Special operation• Specification• Transaction constraint (due to restricted instruction) [0293] In one embodiment, the exception checking provided above may occur in multiple orders. A particular order for exception checking is as follows:• Exceptions with the same priority as the program stop condition priority for the general case.• Specification exception due to reserved PIFC value.• Specification exception due to a first operand address not on a double-word boundary.• Access exception (when field B1 is non-zero).• Abort due to exceeding maximum transaction grouping depth.• Condition code 0 due to normal completion. [0294] Notes: 1. When the B1 field is non-zero, the following applies:• A transaction accessible diagnostic block (TDB) must be provided when an outermost transaction is started - even if the transaction never aborts.• Since it is unpredictable if TDB accessibility is tested for grouped transactions, an accessible TDB must be provided for any grouped TBEGIN statement. • The performance of any TBEGIN where the B1 field is non-zero, and the performance of any abort processing that occurs for a transaction that was started by an outermost TBEGIN, where the B1 field is non-zero, can be more slower than when field B1 is zero.2. Records designated to be saved by the general record save mask are only restored, in one embodiment, if the transaction aborts, not when the transaction ends normally via TRANSACTION END. Only the GRSM-assigned records from the outermost TRANSACTION BEGIN statement are restored on abort. [0295] Field I2 must designate all record pairs that provide input values that are changed by the transaction. That way, if the transaction is aborted, the input register values will be restored to their original contents when the abort controller is entered.3. The TRANSACTION BEGIN (TBEGIN) statement is expected to be followed by a conditional branching statement that will determine whether the transaction has started successfully.4. If a transaction aborts due to conditions that do not result in an interrupt, the PSW-designated transaction abort instruction is given control (that is, the instruction after the outermost TRANSACTION BEGIN (TBEGIN)). In addition to the condition code defined by the TRANSACTION BEGIN (TBEGIN) instruction, condition codes 1-3 are also set when a transaction aborts. [0296] Therefore, the instruction sequence after the outermost TRANSACTION BEGIN instruction (TBEGIN) must be able to accommodate all four condition codes, even though the TBEGIN instruction only sets code 0 in this example.5. In most models, better performance can be achieved, both on TRANSACTION BEGIN and when a transaction aborts, by specifying the minimum number of records needed to be saved and restored in the general record save mask.6. While in unconstrained transactional execution mode, a program can call a service function that can change access registers or floating-point registers (including the floating-point control register). Although such a service routine can save changed records on input and restore them on output, the transaction may abort before the routine exits normally. If the calling program does not make provision to retain these records while the CPU is in unconstrained transactional execution mode, it may not be able to tolerate changing the service role of the records. [0297] To avoid accidental alteration of access registers while in unrestricted transactional execution mode, the program may set the AR modification permission control, bit 12 of field I2 of the TRANSACTION BEGIN instruction, to zero. Similarly, to prevent accidental change of floating-point registers, the program can set the floating-point operation permission control, bit 13 of field I2 of the TBEGIN instruction, to zero.7. Program exception conditions recognized during the execution of the TRANSACTION BEGIN (TBEGIN) instruction are subject to the effective program interrupt filtering control defined by any external TBEGIN instructions. Program exception conditions recognized during execution of the outermost TBEGIN instruction are not subject to filtering.8. In order to update multiple storage locations in a serialized manner, conventional code sequences may employ a blocking word (semaphore). If (a) transactional execution is used to implement updates from multiple storage locations, (b) the program also provides a "rollback" path to be invoked if the transaction aborts, and (c) the rollback path employs a "rollback" path. then the transactional execution path must also test the availability of the lock, and, if the lock is unavailable, end the transaction via the TRANSACTION END statement and branch to the rollback path. This ensures consistent access to the serialized resources, regardless of whether they are transactionally updated. Alternatively, the program can abort if the lock is unavailable, however, abort processing can be significantly slower than simply terminating the transaction via TEND.9 . If the effective program interrupt filtering control (PIFC) is greater than zero, the CPU filters most program interrupts from data exception. If the effective floating point operation permission control (F) is zero, the data exception code (DXC) will not be set in the floating point control register as a result of an abort due to a program exception condition data exception. In this scenario (filtering applies and effective control F is zero), the only place the DXC is inspected is in the TBD specified by TBEGIN. If the program abort controller has to inspect the DXC in this situation, the general register B1 must be non-zero such that a valid transaction diagnostic block (TDBA) address is set. 10. If a PER storage change or address detection condition exists for the TBD specified by the TBEGIN of the outermost TBEGIN instruction, and PER event suppression does not apply, the PER event is acknowledged during instruction execution, thus doing so. cause the transaction to abort immediately, regardless of whether any other abort conditions exist. [0298] In one embodiment, the TBEGIN instruction implicitly sets the transaction abort address to be the next sequential instruction after the TBEGIN. This address is intended to be a conditional branch instruction that determines whether or not to branch depending on the condition code (CC). A successful TBEGIN sets CC0, while an aborted transaction sets CC1, CC2, or CC3. [0299] In one embodiment, the TBEGIN instruction provides an optional storage operand designating the address of a transaction diagnostic block (TDB), in which information is stored if the transaction is aborted. [0300] In addition, it provides an immediate operand including the following:11. A general register save mask (GRSM) indicating which pairs of general registers should be saved at the beginning of the transactional execution and restored if the transaction is aborted;12. A bit (A) to allow the transaction to abort if the transaction modifies access records;13. A bit (F) to allow the transaction to abort if the transaction attempts to execute floating-point instructions; e14. A program interrupt filtering control (PIFC) that allows individual transaction levels to prevent the actual presentation of a program interrupt if a transaction is aborted.15. Controls A, F and PIFC can be different at various levels of grouping and restored to the previous level when the internal transaction levels are finished. [0301] In addition, the TBEGIN (or in another embodiment, TBEGINC) is used to form a transaction token. Optionally, the token can be combined with a token formed by the TEND instruction. For each TBEGIN (or TBEGINC) instruction, as an example, a token is formed from the first operand address. This token can be formed regardless of whether the base register is zero (unlike the TDB address setting which only occurs when the base register is non-zero). For each TRANSACTION END statement executed with a non-zero base register, a similar token is formed from its storage operand. If the tokens do not match, a program exception can be recognized to alert the program of an unpaired instruction. [0302] Token matching provides a mechanism intended to improve software reliability by ensuring that a TEND statement is properly paired with a TBEGIN (or TBEGINC). When a TBEGIN instruction is executed at a particular grouping level, a token is formed from the storage operand address that identifies that case of a transaction. When a corresponding TEND instruction is executed, a token is formed from the instruction's storage operand address, and the CPU compares the start token for the grouping level with the end token. If the tokens do not match, an exception condition is recognized. A model can implement card matching for only a certain number of clustering levels (or for no clustering levels at all). The token may not encompass all bits of the storage operand address, or the bits may be combined through hashing or other methods. A token can be formed by the TBEGIN instruction even if its storage operand is not accessed. [0303] To summarize, the processing of an unconstrained transaction is as follows:- If TND = 0:• if Bi Φ 0, transaction diagnostic block address configured from the first operand address.• Abort PSW transaction set to next sequential instruction address.• General register pairs designated by field I2 are saved in model dependent location.• Not directly accessible by program• Effective PIFC, A & F controls computed• Effective A = TBEGIN A & any External A• Effective F = TBEGIN F & any external F• Effective PIFC = max(TBEGIN PIFC, any external PIFC)- Transaction nesting depth (TND) incremented- If TND transitions from 0 to i, the CPU enters transactional execution- Condition code set to zero• When instruction after TBEGIN is given control:- TBEGIN success indicated by CC0 - Transaction aborted indicated by non-zero CC- Exceptions:• Abort code 13 if cluster depth exceeded da• Access exception (one of several PICs) if the B1 field is non-zero and the store operand cannot be accessed for a store operation• Execution exception (PIC 0003) if the TBEGIN instruction is the target of a instruction of type execute• Operation exception (PIC 0001) if transactional execution facility is not installed• PIC 0006 if• PIFC is invalid (value of 3)• Address of second operand not aligned with double word• PIC 0013 hex if control transactional execution time (CR0.8) is zero• PIC 0018 hex if issued in restricted TX mode [0304] As indicated above, a transaction, constrained or unconstrained, can be terminated by a TRANSACTION END (TEND) statement. Additional details regarding the processing of a TRANSACTION END (TEND) instruction are described with reference to Figure 3. The CPU (that is, the processor) executing the TEND executes the logic of Figure 13. [0305] Referring to figure 13, initially, based on the processor getting (eg, polling and loading, receiving, etc.) from the TEND instruction, various exception checks are performed, and if there is an exception, INQUIRY 1300, then , the exception is handled, STEP 1302. For example, if TRANSACTION END is the target of an execute statement, the operation is suppressed and an execution exception is recognized; and a special operation exception is recognized and the operation is suppressed if the transactional execution control, bit 8 of CR0, is zero. Additionally, an operation exception is recognized and the operation is suppressed, if the transactional execution facility is not installed in the configuration. [0306] Returning to INQUIRY 1300, if an exception is not recognized then the transactional clustering depth is reduced (eg by one), STEP 1304. A determination is made as to whether the transactional clustering depth is zero after the decrease, INQUIRY 1306. If the transaction pool depth is zero, then all storage accesses made by the transaction (and other transactions within the transaction pool, if any, of which the transaction is a part) are committed, STEP 1308 Also, the CPU leaves transactional grouping mode, STEP 1310, and the instruction completes, STEP 1312. [0307] Returning to INQUIRY 1306, if the transaction grouping depth is not equal to zero, then the TRANSACTION END statement only completes. [0308] If the CPU is in transaction execution mode at the start of the operation, the condition code is set to 0; instead, the condition code is set to 2. [0309] Note that the effective floating point operation permission control (F), AR modification permission control (A) and program interrupt filtering control (PIFC) are reset to their respective values before the TRANSACTION BEGIN statement that started the level to end. In addition, a serialization function is performed on completion of the operation. [0310] Transaction end and PER statement lookup and load events that are acknowledged at the end of the outermost TRANSACTION END statement do not result in the transaction being aborted. [0311] In one example, the TEND instruction also includes a base field B2 and an offset field D2, which are combined (eg, added) to create a second operand address. In this example, chip combination can be performed. For example, when B2 is non-zero, the selected bits of the second operand address are compared to a transaction token formed by the corresponding TBEGIN. If there is a mismatch, an exception exists (eg PIC 0006). [0312] According to one aspect, the execution of certain instructions, and therefore the modification and/or access of certain registers, is selectively controlled based on one or more controls of the TRANSACTION BEGIN statement. These controls are used to selectively determine whether particular types of instructions can be executed within a given transaction. For example, since certain types of records, such as access records, floating-point records, and/or the floating-point control record, are not restored on a transaction abort, the transaction abort handle recovery routine transaction may not be able to accommodate the modification of such registers or even the execution of instructions from a floating point context. As used in this document, a floating-point context includes any instruction that can inspect or change floating-point registers or the floating-point control register. Thus, a mechanism is employed to indicate whether such modification/access is tolerated. [0313] In particular, since the abort handling represents processing at the outermost level and since the access register modification or a floating point operation may have taken place at an inner grouping level, a mechanism is provided to indication of whether modifying registers or executing context instructions is allowed. This mechanism includes, for example, controls in the TRANSACTION BEGIN statement. [0314] In one embodiment, the controls include the “A” control, which is the access record modification permission control, and the “F” control, which is the floating point operation permission control. Transactions can be grouped and therefore there is a set of controls for each level of grouping. The effective control A and F is a logical AND of all controls of the same type at all levels of grouping. Thus, effective control is the least permissive of the current grouping level and all levels below. However, in a grouped transaction, effective control is restored to that of the lower grouping level each time a TRANSACTION END statement is executed. For example, a series of nested TBEGIN instructions might have control A set to 1, 1, 0, 1, and 0 at nesting levels 1, 2, 3, 4, and 5. Thus, at nesting depths 1 and 2, Access record modification is allowed, but at cluster level 3 and above, access record modification is not allowed. As the program transitions back from grouping level 3 to 2, access record modification becomes again allowed. Similar operation applies to control F. [0315] An embodiment of updating controls as the grouping level decreases is described with reference to figure 14. In one example, a processor executes this logic. Initially, a transaction is started, based on, for example, execution of a TRANSACTION BEGIN statement, STEP 1400. This transaction may or may not be part of a transaction grouping. The TRANSACTION BEGIN statement includes one or more controls used to indicate whether certain records/contexts can be updated and therefore whether certain statements can be executed. For example, a TBEGIN instruction includes controls A and F, each of which is respectively set to a 0 if proper modification is not allowed, or a 1 if modification is allowed. In addition, the TBEGINC instruction includes control A, which is similarly set to 0 or 1. The values of these controls are used, based on the execution of the TRANSACTION BEGIN instruction, to determine the effective value of control A and/or the effective value. control F, as described above, STEP 1402. [0316] At some point, a transaction may terminate, STEP 1404. A determination as to whether this is the end of the outermost transaction (that is, the outermost transaction of a set of transactions or the end of a transaction that is not part of a transaction grouping), INQUIRY 1406. If not the end of the outermost transaction, then the one or more effective controls are updated, STEP 1408. In one example, controls are updated by recalculating the effective controls without including the controls of the transaction that ended. Returning to INQUIRY 1406, if it is the end of the outermost transaction, then processing is complete. [0317] Described above is a mechanism to selectively control, within a transaction, the execution of certain instructions. For example, controls are provided which indicate whether a particular type of instruction is allowed to execute and therefore is allowed to modify its respective registers/context. For example, a control is provided which indicates whether access registers can be modified and therefore whether an instruction that modifies such registers can be executed. As an additional example, a control is provided which indicates whether floating point operations can be performed. [0318] In addition, an efficient means of updating multiple discontinuous objects in memory without classical (verbose) serialization, such as locking, is provided above, which provides the potential to significantly improve multiprocessor performance. That is, multiple discontinuous objects are updated without applying the more detailed storage access ordering that is provided by classical techniques such as locks and semaphores. Speculative execution is provided without costly recovery setup, and restricted transactions are offered for simple, small-scale upgrades. [0319] Transactional execution can be used in a variety of scenarios, including, but not limited to, partial embedding, speculative processing, and lock suppression. In partial embedding, the partial region to be included in the executed toolpath is wrapped in TBEGIN/TEND. TABORT can be included in this document for state rollback on an output side. For speculation, as in Java, null checks on unreferenced pointers can be deferred to the edge of the circuit using a transaction. If the pointer is null, the transaction can safely abort using TABORT, which is included within TBEGIN/TEND. [0320] As for blocking avoidance, an example of its use is described with reference to Figures 15A-15B and the code fragment provided below. [0321] Fig. 15A shows a doubly linked list 1500 of a plurality of queue elements 1502a-1502d. A new queue element 1502e must be inserted into the doubly linked list of queue elements 1500. Each queue element 1502a-1502e includes a forward pointer 1504a-1504e and a backward pointer 1506a-1506e. As shown in Fig. 15B, to add queue element 1502e between queue elements 1502b and 1502c, (1) backward pointer 1506e is configured to point to queue element 1502b, (2) forward pointer 1504e is configured to point to queue element 1502c, (3) backward pointer 1506c is configured to point to queue element 1502e, and (4) forward pointer 1504b is configured to point to the queue element 1502e. [0322] An example of a code fragment corresponding to figures 15A-15B is below:* R1 - address of the new queue element to be inserted.* R2 - address of the insertion point; new element is inserted before the element pointed to by R2. [0323] In one example, if the transaction is used for lock avoidance, but the withdrawal path uses a lock, the transaction must at least poll and load the lock word to see what is available. The processor guarantees that the transaction will abort if another CPU accesses the lock non-transactionally. [0324] As used in this document, storage, central storage, main storage, memory, and main memory are used interchangeably, unless otherwise noted, implicitly by use or explicitly. Furthermore, in one embodiment, effectively deferring a transaction includes deferring the commitment of transactional stores to main memory until the completion of a selected transaction; in another embodiment, an effectively deferred transaction includes allowing transactional updates to memory, but keeping old values and restoring memory to old values on abort. [0325] As will be appreciated by one skilled in the art, one or more aspects may be incorporated as a system, method or computer program product. Accordingly, one or more aspects may take the form of an all-hardware embodiment, an all-software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects that may all be generally referred to in this document as a “circuit”, “module” or “system”. In addition, one or more aspects may take the form of a computer program product embedded in one or more computer-readable medium(s) having computer-readable program code embedded therein. [0326] Any combination of one or more computer readable media(s) may be used. The computer readable medium may be a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device or any suitable combination thereof. More specific examples (a non-exhaustive list) of computer-readable storage media include the following: an electrical connection having one or more cables, a portable computer floppy disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a device storage devices or any suitable combination thereof. In the context of this document, a computer readable storage medium can be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus or device. [0327] Referring now to Figure 16, in one example, a computer program product 1600 includes, for example, one or more non-transient computer-readable storage media 1602 for storing computer-readable program code or logic media 1604 in them to provide and facilitate one or more embodiments. [0328] Program code embedded in a computer-readable medium may be transmitted using an appropriate medium, including, but not limited to, wireless, cable, fiber optic cable, RF, etc., or any suitable combination thereof. [0329] Computer program code to perform operations for one or more embodiments may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as "C" programming language, assembler or similar programming languages. The program code can run entirely on the user's computer, partly on the user's computer as a standalone software package, partly on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or the connection can be made to an external computer. (for example, over the Internet using an Internet Service Provider). [0330] One or more embodiments are described in this document with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It is to be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. Such computer program instructions may be provided to a processor of a general purpose computer, special purpose computer or other programmable data processing apparatus to produce a machine such that the instructions, which are executed through the computer's processor or other programmable data processing apparatus, create means to implement the functions/actions specified in the flowchart and/or block or blocks of the block diagram. [0331] Such computer program instructions may also be stored on a computer readable medium that can direct a computer, other programmable data processing apparatus or other devices to function in a particular manner such that the instructions stored on the computer readable medium computer produce an article of manufacture including instructions that implement the function/action specified in the flowchart and/or block or blocks of the block diagram. [0332] Computer program instructions may also be loaded into a computer, other programmable data processing apparatus or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer-implemented process, such that instructions that are executed on the computer or other programmable apparatus provide processes for implementing the functions/actions specified in the flowchart and/or block or blocks of the block diagram. [0333] The flowchart and block diagrams in the figures illustrate the architecture, functionality and operation of possible implementations of computer program systems, methods and products according to various embodiments. In this sense, each block in the flowchart or block diagrams may represent a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logic function(s). It should also be noted that, in some alternative implementations, the functions observed in the block may occur out of the order observed in the figures. For example, two blocks shown in a row may, in fact, be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order, depending on the functionality involved. It will also be noted that each block of the flowchart illustration and/or block diagrams, and combinations of blocks in the block diagram and/or flowchart illustration, may be implemented by special-purpose hardware-based systems that perform the actions or functions specified, or combinations of computer instructions and special-purpose hardware. [0334] In addition to the above, one or more aspects may be provided, offered, implemented, managed, serviced, etc. by a service provider that offers management of customer environments. For example, the service provider can create, maintain, support, etc. computer code and/or a computer infrastructure that performs one or more aspects for one or more clients. In return, the service provider may receive payment from the customer under a subscription agreement and/or fee, as examples. Additionally or alternatively, the service provider may receive payment for the sale of advertising content to one or more third parties. [0335] In one embodiment, an application may be deployed to perform one or more embodiments. As an example, deploying an application comprises providing operable computer infrastructure to execute one or more embodiments. [0336] As a further aspect, a computer infrastructure may be implemented comprising integrating computer readable code into a computer system, wherein the code in combination with the computer system is capable of executing one or more embodiments. [0337] As yet another aspect, a process for integrating computer infrastructure comprising integrating computer readable code into a computer system may be provided. The computer system comprises computer readable medium, wherein the computer medium comprises one or more embodiments. The code in combination with the computer system is capable of executing one or more embodiments. [0338] While various embodiments are described above, these are only examples. For example, computing environments of other architectures can be used to incorporate and utilize one or more embodiments. Also, different instructions, instruction formats, instruction fields and/or instruction values can be used. Also, different, additional and/or other restrictions/limitations may be provided/used. Many variations are possible. [0339] In addition, other types of computing environments can benefit and be used. As an example, a data processing system suitable for storing and/or executing program code is usable which includes at least two processors coupled directly or indirectly to memory elements via a system bus. Memory elements include, for example, local memory employed during actual program code execution, mass storage, and cache memory that provide temporary storage of at least some program code in order to reduce the number of times the code must be retrieved from mass storage at runtime. [0340] Input/Output Devices or I/O (including, but not limited to, keyboards, displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives, other memory media, etc.) may be attached to the system either directly or through intervention of I/O controllers. Network adapters may also be coupled to the system to allow the data processing system to be coupled to other data processing systems or remote printers or storage devices through intervening public or private networks. Modems, cable modems and Ethernet cards are just a few of the available types of network adapters. [0341] Referring to Figure 17, representative components of a host computer system 5000 for implementing one or more embodiments are depicted. Representative host computer 5000 comprises one or more CPUs 5001 communicating with computer memory (i.e., central storage) 5002, as well as I/O interfaces to storage media devices 5011 and networks 5010 for communicating with other computers or SANs, and similar. The 5001 CPU supports an architecture having a configured architecture instruction and architecture functionality. The CPU 5001 may have access register translation (ART) 5012, which includes a buffer separate from ART (ALB) 5013 for selecting an address space to be used by dynamic address translation (DAT) 5003 to transform addresses (virtual addresses) into real memory addresses. A DAT typically includes a separate translation buffer (TLB) 5007 for temporary translations, so that later accesses to the computer memory block 5002 do not require deferral of the address translation. Typically, a 5009 cache memory is deployed between the 5002 computer memory and the 5001 processor. The 5009 cache memory may be hierarchical having ample cache memory available to more than one CPU, smaller, faster (lower tier) cache memories between large cache memory and each CPU. In some implementations, the low-level cache memories are split to provide separate low-level cache memories for data accesses and instruction lookup and load. In one embodiment, for the TX facility, a transaction diagnostic block (TDB) 5100 and one or more buffers 5101 may be stored in one or more of cache memory 5009 and memory 5002. In one example, in TX mode, the data is initially stored in a TX buffer, and when the TX mode ends (e.g., outermost TEND), the data in the buffer is stored (committed) in the memory, or if there is an abort, the data in the buffer is discarded. [0342] In one embodiment, an instruction is fetched from memory 5002 by an instruction fetch and load unit 5004 through a cache memory 5009. The instruction is decoded in an instruction decode unit 5006 and dispatched (with other instructions in some embodiments) to the instruction execution unit or units 5008. Typically, several execution units 5008 are employed, for example, an arithmetic execution unit, a floating point execution unit, and an instruction execution unit of branch. Furthermore, in one embodiment of the TX facility, various TX 5110 controls may be employed. The instruction is executed by the execution unit, accessing operands from specified instruction registers or memory as needed. If an operand is to be accessed (loaded or stored) from memory 5002, a load/store unit 5005 typically handles access under the control of the instruction being executed. Instructions can be executed in hardware circuits or in internal microcode (firmware) or a combination of both. [0343] In keeping with one aspect of the TX facility, the 5001 processor also includes a 5102 PSW (e.g., abort and/or TX PSW), a 5104 nesting depth, a 5106 TDBA, and one or more control registers 5108. [0344] As noted, a computer system includes information in local (or main) storage, as well as addressing, protection, and reference and change logging. Some aspects of addressing include the format of addresses, the concept of address spaces, the various types of addresses, and the way in which one type of address is translated into another type of address. Part of the main storage includes permanently assigned storage locations. Main storage provides the system with directly addressable, fast-access data storage. Both data and programs must be loaded into main storage (from input devices) before they can be processed. [0345] The main store may include one or more smaller, faster-access buffer stores, commonly referred to as cache memory. A cache memory is typically physically associated with a CPU or an I/O processor. The effects, other than performance, of physical construction and use of different storage media are generally not observable by the program. [0346] Separate cache memories can be maintained for instructions and data operands. Information within a cache memory is held in contiguous bytes on an integral boundary called a cache memory block or cache memory line (or line for short). A template can provide an EXTRACT CACHE ATTRIBUTE instruction that returns the size of a cache memory line in bytes. A model may also provide PREFETCH DATA and PREFETCH DATA RELATIVE LONG instructions that prefetch and load cached data or instruction or flush data from cache memory. [0347] Storage is visualized as a long horizontal string of bits. For most operations, storage accesses proceed in a left-to-right sequence. The bit string is subdivided into eight-bit units. A unit of eight bits is called a byte, which is the basic building block of all information formats. Each byte location in storage is identified by a unique non-negative integer number, which is the address of that byte location, or simply the byte address. Adjacent byte locations have consecutive addresses, starting with 0 on the left and proceeding in a sequence from left to right. Addresses are unsigned binary integers and are 24-bit, 31-bit, or 64-bit. [0348] Information is transmitted between storage and a CPU or a one-byte channel subsystem, or a group of bytes, at a time. Unless otherwise noted, for example, in the z/ Architecture, a group of bytes in storage is addressed by the leftmost byte of the group. The number of bytes in the group is implied or explicitly specified by the operation to be performed. When used in a CPU operation, a group of bytes is called a field. Within each group of bytes, for example in the z/ Architecture, the bits are numbered in a sequence from left to right. In the z/ Architecture, the leftmost bits are generally referred to as the “higher order” bits and the rightmost bits as the “lower order” bits. Bit numbers are not storage addresses, however. Only bytes can be addressed. To operate on individual bits of a byte in storage, the entire byte is accessed. The bits in a byte are numbered from 0 to 7, from left to right (for example, in the z/ Architecture). The bits in an address can be numbered 8-31 or 40-63 for 24-bit addresses, or 1-31 or 33-63 for 31-bit addresses; they are numbered 0-63 for 64-bit addresses. In one example, bits 8-31 and 1-31 apply to addresses that are in one location (e.g. register), i.e. 32 bits long, while bits 40-63 and 33-63 apply to addresses that are in a local 64-bit length. Within any other multi-byte fixed-length format, the bits that make up the format are consecutively numbered starting at 0. For error detection purposes, and preferably for correction, one or more check bits may be transmitted with each byte. or with a group of bytes. Such check bits are generated automatically by the machine and cannot be directly controlled by the program. Storage capacities are expressed in number of bytes. When the length of a storage operand field is implied by the opcode of an instruction, the field is said to have a fixed length, which can be one, two, four, eight, or sixteen bytes. Larger fields may be implied for some instructions. When the length of a storage operand field is not implied, but is explicitly defined, the field is said to have a variable length. Variable-length operands can vary in length by one-byte increments (or with some instructions, in multiples of two bytes or other multiples). When information is placed in storage, the contents of only those byte locations are replaced, which are included in the designated field, even though the width of the physical path to storage may be greater than the length of the field being stored. [0349] Certain information units must be on an integral boundary in storage. A boundary is called an integral for a unit of information when its storage address is a multiple of the unit's length in bytes. Special names are given to 2, 4, 8, 16 and 32 byte fields on an integral boundary. A halfword is a group of two consecutive bytes on a two-byte boundary and is the basic building block of instructions. A word is a group of four consecutive bytes on a four-byte boundary. A double word is a group of eight consecutive bytes on an eight-byte boundary. A foursquare word is a group of 16 consecutive bytes on a 16-byte boundary. An octopword is a group of 32 consecutive bytes on a 32-byte boundary. When storage addresses designate halfwords, doublewords, foursquare words, and octopwords, the binary representation of the address contains one, two, three, four, or five rightmost zero bits, respectively. Instructions must be on two-byte integral boundaries. The storage operands of most instructions have no boundary alignment requirements. [0350] On devices that implement separate cache memories for data and instruction operands, a significant delay can be experienced if the program is stored on a cache memory line from which instructions are subsequently fetched and loaded, regardless of whether the store changes the instructions. instructions that are subsequently polled and loaded. [0351] In one example, the embodiments may be practiced by software (generally referring to licensed internal code, firmware, microcode, millicode, picocode and the like, any of which must be consistent with one or more embodiments). Referring to Figure 17 , software program code that incorporates one or more aspects may be accessed by processor 5001 of host system 5000 from long-term storage media devices 5011, such as a CD-ROM drive, cassette tape drive or hard disk drive. The software program code may be implemented on any of a variety of media known for use with a data processing system, such as a floppy disk, hard disk, or CD-ROM. The code may be distributed on such media or may be distributed to users from computer memory 5002 or storage of a computer system on a network 5010 to other computer systems for use by users of such other systems. [0352] Software program code includes an operating system that controls the function and interaction of the various computer components and one or more application programs. Program code is normally paged from storage media device 5011 to relatively higher speed computer storage 5002, where it is available for processing by processor 5001. Techniques and methods for embedding software program code in the memory, on physical media, and/or distribution of software code over networks are well known and will not be discussed further in this document. Program code, when created and stored on a tangible medium (including, but not limited to, electronic memory modules (RAM), flash memory, Compact Discs (CDs), DVDs, Magnetic Tape, and the like) is generally referred to as a “computer program product”. The computer program product medium is typically readable by a processing circuit preferably in a computer system for execution by the processing circuit. [0353] Figure 18 illustrates a representative workstation or server hardware system, in which one or more embodiments may be practised. The system 5020 of Fig. 18 comprises a representative base computer system 5021, such as a personal computer, a workstation, or a server, including optional peripheral devices. The base computer system 5021 includes one or more processors 5026 and a bus employed to connect and allow communication between the processor(s) 5026 and the other components of the system 5021 in accordance with known techniques. The bus connects the 5026 processor to the 5025 memory and 5027 long-term storage, which can include a hard disk (including any magnetic media, CD, DVD, and Flash Memory, for example) or a tape drive, for example. The 5021 system must also include a user interface adapter, which connects the 5026 microprocessor via the bus to one or more interface devices, such as a 5024 keyboard, 5023 mouse, 5030 printer/scanner, and/or other interface devices. interface, which can be any user interface device, such as a touch screen, digitized input keyboard, etc. The bus also connects a 5022 display device, such as a monitor or LCD screen, to the 5026 microprocessor through a display adapter. [0354] The 5021 system can communicate with other computers or computer networks through a network adapter capable of 5028 communicating with a 5029 network. Examples of network adapters are communication channels, token ring, Ethernet, or modems. Alternatively, the 5021 system can communicate using a wireless interface, such as a CDPD (cellular digital packet data) card. System 5021 may be associated with such other computers on a Local Area Network (LAN) or Wide Area Network (WAN), or system 5021 may be a client in a client/server arrangement with another computer, etc. All such configurations, as well as the appropriate communication hardware and software, are known in the art. [0355] Fig. 19 illustrates a data processing network 5040, in which one or more embodiments may be practised. Data processing network 5040 may include a plurality of individual networks, such as a wireless network and a cable network, each of which may include a plurality of individual workstations 5041, 5042, 5043, 5044. Additionally, as those skilled in the art will appreciate, one or more LANs may be included, wherein the LAN may comprise a plurality of intelligent workstations coupled to a host processor. [0356] Still referring to Figure 19, networks can also include computers or mainframe servers, such as a gateway computer (client server 5046) or application server (remote server 5048 that can access a data repository and can also be accessed directly from a 5045 workstation). A 5046 gateway computer serves as an entry point into each individual network. A gateway is required when connecting one network protocol to another. Gateway 5046 may preferably be coupled to another network (the Internet 5047, for example) via a communication link. The 5046 gateway can also be directly coupled to one or more workstations 5041, 5042, 5043, 5044 using a communication link. The gateway computer can be deployed using an IBM eServer System z server available from International Business Machines Corporation. [0357] Referring simultaneously to figure 18 and figure 19, software programming code 5031, which may incorporate one or more aspects, may be accessed by processor 5026 of system 5020 from long-term storage medium 5027, such as a CD-ROM drive or hard disk. Software programming code may be embedded in any of a variety of known media for use with a data processing system, such as a floppy disk, hard disk, or CD-ROM. the code may be distributed on such media or may be distributed to users 5050, 5051 from the memory or storage of a computer system on a network to other computer systems for use by users of such other systems. [0358] Alternatively, programming code may be embedded in memory 5025 and accessed by processor 5026 using the processor bus. Such programming code includes an operating system that controls the function and interaction of the various computer components and one or more application programs 5032. The program code is normally paged from storage medium 5027 to high-speed memory 5025, where is available for processing by the 5026 processor. Techniques and methods for embedding software programming code in memory, on physical media, and/or distributing software code over networks are well known and will not be discussed further in this document. Program code, when created and stored on a tangible medium (including, but not limited to, electronic memory modules (RAM), flash memory, Compact Discs (CDs), DVDs, Magnetic Tape, and the like) is generally referred to as a “computer program product”. The computer program product medium is typically readable by a processing circuit preferably in a computer system for execution by the processing circuit. [0359] The cache memory that is most readily available to the processor (typically faster and smaller than other processor cache memories) is the lowest cache memory (L1 or level one) and the main storage (main memory) is the lowest cache memory (L1 or level one). highest level cache memory (L3 if 3 levels). The lower-level cache memory is generally divided into an instruction cache (I-Cache) holding machine instructions to be executed and a data cache (D-Cache) holding data operands. [0360] Referring to Fig. 20, an exemplary processor embodiment is shown for the processor 5026. Typically, one or more levels of cache memory 5053 are allocated to buffer blocks in order to improve processor performance. The 5053 cache memory is a high speed buffer carrying cache memory lines of memory data that are likely to be used. Typical cache memory lines have 64, 128, or 256 bytes of memory data. Separate cache memories are generally used for cache instructions rather than cache data. Cache memory coherence (synchronization of copies of lines in memory and cache memories) is generally provided by several snoop algorithms well known in the art. The 5025 main memory store of a processor system is commonly referred to as cache memory. On a processor system having 4 levels of 5053 cache memory, the 5025 main storage is generally referred to as the level 5 (L5) cache memory, since it is typically faster and only carries the portion of nonvolatile storage (DASD, tape etc.) that is available to a computer system. The 5025 main store “temporarily stores (caches)” pages of data paged in and out of the 5025 main store by the operating system. [0361] A program counter (instruction counter) 5061 keeps track of the address of the current instruction to be executed. A program counter on an Architecture z/ processor is 64 bits and can be truncated to 31 or 24 bits to support forward addressing limits. A program counter is typically embedded in a computer's PSW (Program Status Word), such that it persists during context switching. In this way, a program in progress, having a program counter value, can be interrupted, for example, by the operating system (context switching from the program environment to the operating system environment). The program PSW maintains the program counter value while the program is not active, and the program counter (in PSW) of the operating system is used while the operating system is running. Typically, the program counter is incremented by an amount equal to the number of bytes in the current instruction. RISC (Reduced Instruction Set Computation) instructions are typically of fixed length while CISC (Complex Instruction Set Computation) instructions are typically of variable length. IBM z/ Architecture Instructions are CISC instructions having a length of 2, 4, or 6 bytes. Program counter 5061 is modified by a context switch operation or a branch instruction branch take operation, for example. In a context switch operation, the current program counter value is saved in the program status word along with other state information about the program being executed (such as condition codes), and a new program counter value. is loaded pointing to an instruction of a new program module to be executed. A branch take operation is performed to allow the program to make decisions or loop (loop) within the program by loading the result of the branch instruction into program counter 5061. [0362] Typically, a 5055 instruction search and load unit is employed to search and load instructions on behalf of the 5026 processor. branch or the first instructions of a program after a context switch. Modern Instruction lookup and load units often employ prefetch and load techniques to speculatively lookup and load instructions based on the likelihood that the prefetched and loaded instructions will be used. For example, a search and load unit can search and load 16 instruction bytes that include the next sequential instruction and additional bytes of additional sequential instructions. [0363] The polled and loaded instructions are then executed by the processor 5026. In one embodiment, the polled and loaded instructions are passed to a dispatch unit 5056 of the polling and loading unit. The dispatch unit decodes the instruction(s) and forwards information about the decoded instruction(s) to the appropriate units 5057, 5058, 5060. An execution unit 5057 will typically receive information about decoded arithmetic instructions from the 5055 instruction fetch and load unit and will perform arithmetic operations on operands according to the instruction opcode. Operands are supplied to execution unit 5057 preferably from memory 5025, architecture registers 5059 or from an immediate field of the instruction being executed. Execution results, when stored, are stored in memory 5025, registers 5059, or other machine hardware (such as control registers, PSW registers, and the like). [0364] Virtual addresses are transformed to real addresses using dynamic address translation 5062, and optionally using access record transaction 5063. [0365] A 5026 processor typically has one or more units 5057, 5058, 5060 for executing the instruction's function. Referring to Fig. 21A, an execution unit 5057 can communicate 5071 with general architecture registers 5059, a decode/dispatch unit 5056, a load storage unit 5060, and other processor units 5065 via interface logic 5071 An execution unit 5057 may employ multiple register circuits 5067, 5068, 5069 to maintain information on which the arithmetic logic unit (ALU) 5066 will operate. The ALU performs arithmetic operations, such as add, subtract, multiply, and divide, as well as logical functions, such as and, or, and exclusive-or (XOR), rotate, and swap. Preferably, the ALU supports specialized operations that are project dependent. Other circuits may provide other 5072 architecture features including condition codes and recovery support logic, for example. Typically, the result of an ALU operation is held in a 5070 output register circuit that can forward the result to a variety of other processing functions. There are various arrangements of processor units, the present description is only intended to provide a representative understanding of an embodiment. [0366] An ADD instruction, for example, would execute in a 5057 execution unit having logic and arithmetic functionality, while a floating point instruction, for example, would execute in a floating point execution having specialized floating point capability. Preferably, an execution unit operates on operands identified by an instruction executing an opcode-defined function on the operands. For example, an ADD instruction can be executed by a 5057 execution unit on operands found in two 5059 registers identified by the instruction's register fields. [0367] The 5057 execution unit performs arithmetic addition on two operands and stores the result in a third operand, where the third operand can be a third register or one of the two source registers. The execution unit preferably uses a 5066 Arithmetic Logic Unit (ALU) that is capable of performing a variety of logic functions, such as Change, Rotate, and, or and XOR, as well as a variety of algebraic functions, including any addition. , subtraction, multiplication, division. Some 5066 ALUs are designed for scalar operations and some for floating point. Data can be Big Endian (where the least significant byte is at the highest byte address) or Little Endian (where the least significant byte is at the lowest byte address) depending on architecture. IBM's z/ Architecture is Big Endian. Signed fields can be sign and dimension, 1's complement or 2's complement depending on the architecture. A 2's complement number is advantageous in that the ALU does not need to project and subtract the capacity since a negative value or a positive value in 2's complement only requires an addition within the ALU. Numbers are commonly described in abbreviated form, where a 12-bit field defines an address of a block of 4096 bytes and is commonly described as a block of 4 Kbytes (Kilo-byte), for example. [0368] Referring to Fig. 21B, branch instruction information for executing a branch instruction is typically sent to a branch unit 5058 which generally employs a branch prediction algorithm such as a branch history table 5082 to predict the outcome of branching before other conditional operations are completed. The current branch instruction target will be polled and loaded and speculatively executed before the conditional operations complete. When conditional operations complete, speculatively executed branch statements are completed or discarded based on the conditions of the conditional operation and the speculated result. A typical branch instruction can test condition codes and branch to a target address if the condition codes match the branch instruction's branch requirement, a target address can be calculated based on various numbers including those found in the register fields or an immediate field of the statement, for example. Branch unit 5058 may employ an ALU 5074 having a plurality of register-in circuits 5075, 5076, 5077 and a register-out circuit 5080. Branch unit 5058 may communicate 5081 with general registers 5059, decode the unit dispatch 5056 or other 5073 circuits, for example. [0369] The execution of a group of instructions can be interrupted for a variety of reasons including a context switch initiated by an operating system, a program exception or error causing a context switch, an I/O interrupt signal causing a context switching or multithreaded activity of a plurality of programs (in a multithreaded environment), for example. Preferably, a context-switching action saves state information about a currently running program and then loads state information about another program being invoked. State information can be saved in hardware registers or in memory, for example. State information preferably comprises a program counter value pointing to a next instruction to be executed, condition codes, memory translation information and architectural register contents. A context-switching activity can be performed by hardware circuits, application programs, operating system programs, or firmware code (microcode, pico-code, or licensed internal code (LIC)) alone or in combination. [0370] A processor accesses operands according to defined instruction methods. The instruction may provide an immediate operand using the value of a portion of the instruction, it may provide one or more register fields explicitly pointing to general-purpose registers or special-purpose registers (floating-point registers, for example). The instruction can use implied registers identified by an opcode field as operands. The instruction can use memory locations for operands. A memory location of an operand can be provided by a register, an immediate field, or a combination of registers and an immediate field as exemplified by the long-shift facility of the z/ Architecture, where the instruction defines a base register, an index register. and an immediate field (shift field) that are added together to give the address of the operand in memory, for example. The location in this document typically implies a location in main memory (main storage) unless otherwise noted. [0371] Referring to Figure 21C, a processor accesses storage using a load/storage unit 5060. The load/storage unit 5060 can perform a load operation by obtaining the address of the target operand in memory 5053 and loading the operating on a register 5059 or other memory location 5053, or it may perform a store operation by obtaining the address of the target operand in memory 5053 and storing the data obtained from a register 5059 or other memory location 5053 in the target operand location in memory 5053. Load/storage unit 5060 may be speculative and may access memory in a sequence that is out of order with respect to the instruction sequence, however, load/storage unit 5060 must maintain appearance for programs whose instructions were performed in order. A load/storage unit 5060 can communicate 5084 with general registers 5059, decode/dispatch unit 5056, memory/cache interface 5053, or other 5083 elements and comprises various register circuits 5086, 5087, 5088 and 5089, ALUs 5085 and 5090 control logic to calculate storage addresses and to provide sequencing to keep operations in order. Some operations may be out of order, but the load/storage unit provides functionality to make out-of-order operations appear to the program as having been performed in order, as is well known in the art. [0372] Preferably, the addresses that an application program “views” are generally referred to as virtual addresses. Virtual addresses are often referred to as "logical addresses" and "effective addresses". These virtual addresses are virtual because they are redirected to the physical memory location by one of a variety of dynamic address translation (DAT) technologies including, but not limited to, simply prefixing a virtual address with an offset value, translating the virtual address via one or more translation tables, the translation tables preferably comprising at least a segment table and a page table alone or in combination, preferably the segment table having an entry pointing to the page table. In the z/ Architecture, a translation hierarchy is provided including a first region table, a second region table, a third region table, a segment table, and an optional page table. Address translation performance is generally improved by using a separate translation buffer (TLB) which comprises mapping entries from a virtual address to an associated physical local memory. Entries are created when the DAT translates a virtual address using translation tables. Subsequent use of the virtual address can then use fast TLB entry instead of slow sequential translation table accesses. TLB content can be managed by a variety of replacement algorithms including LRU (Least Recently Used). [0373] In the case where the processor is a processor of a multiprocessor system, each processor has the responsibility to keep shared resources, such as I/O, caches, TLBs and memory, locked by coherence. Typically, “snoop” technologies will be used to maintain cache memory coherence. In a snoop environment, each line of cache memory can be marked as being in any one of a shared state, an exclusive state, a changed state, an invalid state, and the like in order to facilitate sharing. [0374] 5054 I/O Units (figure 20) provide the processor with a means of connecting to peripheral devices including tape, disk, printers, displays and networks, for example. I/O units are generally presented to the computer program by software units. On mainframes, such as the IBM® System z, channel adapters and open systems adapters are mainframe I/O units that provide communication between the operating system and peripheral devices. [0375] In addition, other types of computing environments may benefit from one or more aspects. As an example, an environment may include an emulator (e.g. software or other emulation mechanisms), where a particular architecture (including, for example, instruction execution, architectural functions such as address translation and architecture registers) ) or a subset of it is emulated (for example, on a native computer system having a processor and memory). In such an environment, one or more emulation functions of the emulator may implement one or more embodiments, even though a computer running the emulator may have a different architecture than the capabilities being emulated. As an example, in emulation mode, the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation. [0376] In an emulation environment, a host computer includes, for example, a memory to store instructions and data; an instruction fetch and load unit for fetching and loading instructions from memory and for optionally providing local buffer memory for the fetched and loaded instruction; an instruction decoding unit for receiving the fetched and loaded instructions and for determining the type of instructions that have been fetched and loaded; and an instruction execution unit for executing the instructions. Execution may include loading data into a memory register; storing data back into memory from a register; or performing some sort of logical or arithmetic operation, as determined by the decoding unit. In one example, each unit is implemented in software. For example, the operations being performed by the units are implemented as one or more subroutines within emulator software. [0377] More particularly, on a mainframe, architectural machine instructions are used by programmers, usually today's "C" programmers, usually via a compiler application. These instructions stored on the storage medium can be executed natively on a z/IBM® Architecture Server or, alternatively, on machines running other architectures. They can be emulated on existing and future IBM® mainframe servers and other IBM® machines (eg Power Systems servers and System x Servers). They can run on machines running Linux on a wide variety of machines using hardware made by IBM®, Intel®, AMD and others. In addition to running on that hardware under the z/ Architecture, Linux can be used and also machines that use emulation by Hercules, UMX or FSI (Fundamental Software, Inc), where generally the execution is in an emulation mode. In emulation mode, emulation software is run by a native processor to emulate the architecture of an emulated processor. [0378] The native processor typically runs emulation software comprising firmware or a native operating system to perform emulation of the emulated processor. The emulation software is responsible for looking up and loading and executing instructions from the emulated processor architecture. Emulation software maintains an emulated program counter to keep track of instruction boundaries. Emulation software can poll and load one or more emulated machine instructions at a time and convert the one or more emulated machine instructions into a corresponding group of native machine instructions for execution by the native processor. These converted instructions can be cached so that a faster conversion can be performed. Nevertheless, emulation software must maintain the architectural rules of the emulated processor architecture to ensure that operating systems and applications written on the emulated processor operate correctly. In addition, the emulation software must provide features identified by the emulated processor architecture including, but not limited to, control registers, general purpose registers, floating point registers, dynamic address translation function including segment tables and page, for example, interrupt mechanisms, context switching mechanisms, Time of Day (TOD) clocks, and architectural interfaces to I/O subsystems, such that an operating system or application program designed to run on the emulated processor, can be run on the native processor having the emulation software. [0379] A specific instruction being emulated is decoded and a subroutine is called to perform the function of the individual instruction. An emulation software function emulating a function of an emulated processor is implemented, for example, in a unit or subroutine "C", or some other method of providing a unit for specific hardware, as will be the skill of those skilled in the art. technique after understanding the description of the preferred embodiment. Various software and hardware emulation patents including, but not limited to, US Letter Patent No. 5,551,013 entitled “Multiprocessor for Hardware Emulation”, by Beausoleil et al.; and United States Patent No. 6,009,261, entitled “Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor”, by Scalzi et al; and United States Patent No. 5,574,873 entitled “Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions”, by Davidian et al; and United States Patent No. 6,308,255 entitled “Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System”, by Gorishek et al; and United States Patent No. 6,463,582 entitled “Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” by Lethin et al; and United States Patent No. 5,790,825 entitled “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” by Eric Traut, each of which is incorporated herein by reference in their entirety; and many others illustrate a variety of known ways to achieve emulation of an architectural instruction format for a machine other than a target machine available to those skilled in the art. [0380] In Figure 22, an example of a 5092 emulated host computer system is provided which emulates a 5000' host computer system of a host architecture. In the 5092 emulated host computer system, the host processor (CPU) 5091 is an emulated host processor (or virtual host processor) and comprises an emulation processor 5093 having a different native instruction set architecture than the 5091 processor of the host computer 5000' . The emulated host computer system 5092 has memory 5094 accessible to the emulation processor 5093. In the example embodiment, the memory 5094 is partitioned into a portion of host computer memory 5096 and a portion of emulation routines 5097. The host computer memory 5096 is available to emulated 5092 host computer programs according to the host computer architecture. The 5093 emulation processor executes native instructions from an architecture instruction set of a different architecture than the 5091 emulated processor, the native instructions obtained from memory from 5097 emulation routines, and can access a host instruction for executing a program on the 5096 host computer memory employing one or more instructions taken from a decode/access & sequence routine that can decode the accessed host instruction(s) to determine a native instruction execution routine for emulating the function of the accessed host instruction. Other facilities that are defined for the architecture of the 5000' host computer system may be emulated by architectural facility routines, including such facilities as general purpose registers, control registers, dynamic address translation, and I/O subsystem support and processor cache memory, for example. Emulation routines can also take advantage of functions available on the 5093 emulation processor (such as general registers and dynamic virtual address translation) to improve the performance of the emulation routines. Special offloading and hardware mechanisms may also be provided to assist the 5093 processor in emulating the 5000' host computer function. [0381] The terminology used in this document is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in this document, the singular forms “a”, “an”, “the” and “a” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and/or "comprising", when used in this specification, specify the presence of cited features, integers, steps, operations, elements and/or components, but do not exclude the presence or addition of a or more than other features, integers, steps, operations, elements, components and/or groups thereof. [0382] The corresponding structures, materials, actions and equivalents of all means or steps plus function elements in the claims below, if any, are intended to include any structure, material or action to perform a function in combination with other claimed elements as specifically claimed . The description of one or more embodiments has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the form disclosed. Many modifications and variations will be apparent to those skilled in the art. The embodiment has been chosen and described in order to better explain various aspects and practical application, and to enable others skilled in the art to understand that various embodiments with various modifications are suitable for the particular use contemplated.
权利要求:
Claims (5) [0001] 1. Method for controlling the execution of instructions in transactions on a processor, wherein the processor comprises: a floating-point execution unit for executing floating-point instructions; an access register including an indirect specification of a control space element which designates a translation table for a specific address space to be used in address translation; wherein a transaction includes a sequence of instructions to be completed as a single atomic unit or to be aborted; said method comprising executing, by the processor, a transaction start machine instruction (200), the execution comprising starting a transaction; characterized in that executing the transaction start machine instruction comprises using a first control of at least one control specified in the transaction start machine instruction to determine a first value, where the first control is one of:a co Allowed access register modification control (212) used to indicate whether the transaction is allowed to execute a first type of instructions that modify the access register; or an allowable floating point operation control (214) used to indicate whether the transaction is allowed to execute a first type of instructions which are specified floating point instructions; determine, based on the first value, whether it is permissible to execute an instruction from the sequence of instructions of the transaction that is of the first type; and execute the statement of the first type, based on the first value indicating that the statement is allowed to execute. [0002] 2. Method according to claim 1, characterized in that the transaction start machine instruction is part of a transaction start machine instruction nesting (600, 602, 604), the transaction nesting starts machine instructions with a plurality of nesting transaction levels and the transaction start machine instruction is at a current transaction nesting level, and where the first control is the access record modification control, and the usage comprises performing a logical AND of the transaction start machine instruction access register modification control of the current nesting transaction level and outer nesting levels, if any, to determine the first value, the first value comprising an effective access record modification control that indicates whether the transaction is allowed to execute an instruction that modifies an access record. [0003] 3. Method according to claim 1, characterized in that the transaction start machine instruction is part of a transaction start machine instruction nest (600, 602, 604), the transaction nesting starts machine instructions with a plurality of nesting transaction levels and the transaction start machine instruction is at a current nesting transaction level, and where the first control is the allowed floating-point operation control, and the usage comprises performing a logical AND of the allowed floating point operation control gives the transaction start machine instruction to the current nesting transaction level and outer nesting levels, if any, to determine the first value, the first value comprising an effective floating-point operation allowed control that indicates whether the transaction is allowed to execute the specified floating-point instructions. [0004] 4. Method according to claim 1, characterized in that the transaction is part of a transaction nesting and in which the method further comprises determining the first value based on the completion of a transaction nesting transaction. [0005] 5. System, characterized in that it comprises means adapted to perform all steps of the method as defined in any one of claims 1 to 4.
类似技术:
公开号 | 公开日 | 专利标题 US9792125B2|2017-10-17|Saving/restoring selected registers in transactional processing BR112014031354B1|2022-01-04|SELECTIVE CONTROL OF INSTRUCTION EXECUTION IN TRANSACTIONAL PROCESSING EP2862070B1|2019-04-17|Transactional processing US20160357553A1|2016-12-08|Restricted instructions in transactional execution US8887003B2|2014-11-11|Transaction diagnostic block US8887002B2|2014-11-11|Transactional execution branch indications US10430199B2|2019-10-01|Program interruption filtering in transactional execution BR112014031432B1|2021-07-27|NON TRANSACTIONAL STORAGE INSTRUCTION BR112014031435B1|2021-11-09|RANDOMIZED TEST WITHIN TRANSACTIONAL EXECUTION BR112014031437B1|2021-11-09|TRANSACTIONAL EXECUTION BRANCH INDICATIONS BR112014031353B1|2021-09-28|PROCESSOR ASSISTANCE FACILITY BR112014031350B1|2021-09-21|FILTERING PROGRAM INTERRUPTION IN TRANSACTIONAL RUN
同族专利:
公开号 | 公开日 US20150052337A1|2015-02-19| US9772854B2|2017-09-26| KR20150013745A|2015-02-05| KR101625325B1|2016-05-27| ZA201408076B|2019-05-29| TW201409358A|2014-03-01| AU2013276134A1|2014-12-11| JP2015523655A|2015-08-13| WO2013186722A2|2013-12-19| TWI564808B|2017-01-01| JP6253065B2|2017-12-27| MX347773B|2017-05-12| WO2013186722A4|2014-05-15| US20130339707A1|2013-12-19| SG11201407470YA|2014-12-30| MX2014015288A|2015-04-10| WO2013186722A3|2014-03-27| US20150052336A1|2015-02-19| US9395998B2|2016-07-19| CN104335177B|2017-11-21| AU2013276134B2|2016-06-30| EP2862071A4|2015-12-02| EP2862071A2|2015-04-22| DK2862071T3|2019-04-15| IL236246A|2018-11-29| EP2862071B1|2019-02-27| CN104335177A|2015-02-04| US9983881B2|2018-05-29| IL236246D0|2015-01-29| US20130339328A1|2013-12-19| CA2874238C|2020-09-22| US9983882B2|2018-05-29| CA2874238A1|2013-12-19| ES2717480T3|2019-06-21| HK1207447A1|2016-01-29| BR112014031354A2|2017-06-27|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 CA1174370A|1980-05-19|1984-09-11|Hidekazu Matsumoto|Data processing unit with pipelined operands| US4488227A|1982-12-03|1984-12-11|Honeywell Information Systems Inc.|Program counter stacking method and apparatus for nested subroutines and interrupts| US4740893A|1985-08-07|1988-04-26|International Business Machines Corp.|Method for reducing the time for switching between programs| US5063497A|1987-07-01|1991-11-05|Digital Equipment Corporation|Apparatus and method for recovering from missing page faults in vector data processing operations| US5321823A|1988-07-20|1994-06-14|Digital Equipment Corporation|Digital processor with bit mask for counting registers for fast register saves| US5117498A|1988-08-19|1992-05-26|Motorola, Inc.|Processer with flexible return from subroutine| JPH0437927A|1990-06-01|1992-02-07|Sony Corp|Processor processing method| US5471591A|1990-06-29|1995-11-28|Digital Equipment Corporation|Combined write-operand queue and read-after-write dependency scoreboard| GB2256514B|1991-05-21|1994-11-16|Digital Equipment Corp|Commitment ordering for guaranteeing serializability across distributed transactions| US5701480A|1991-10-17|1997-12-23|Digital Equipment Corporation|Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing| US5274817A|1991-12-23|1993-12-28|Caterpillar Inc.|Method for executing subroutine calls| US5359608A|1992-11-24|1994-10-25|Amdahl Corporation|Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions| AU6629894A|1993-05-07|1994-12-12|Apple Computer, Inc.|Method for decoding guest instructions for a host computer| US5925125A|1993-06-24|1999-07-20|International Business Machines Corporation|Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions| US5470441A|1994-03-07|1995-11-28|Phillips Petroleum Company|Packed column vaporizer and vaporizing process| US5551013A|1994-06-03|1996-08-27|International Business Machines Corporation|Multiprocessor for hardware emulation| US5748964A|1994-12-20|1998-05-05|Sun Microsystems, Inc.|Bytecode program interpreter apparatus and method with pre-verification of data type restrictions| US5655100A|1995-03-31|1997-08-05|Sun Microsystems, Inc.|Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system| WO1997013201A1|1995-10-06|1997-04-10|Advanced Micro Devices, Inc.|Unified multi-function operation scheduler for out-of-order execution in a superscalar processor| US5790825A|1995-11-08|1998-08-04|Apple Computer, Inc.|Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions| TW384447B|1996-01-22|2000-03-11|Infinite Technology Inc|Processor with reconfigurable arithmetic data path| JPH103416A|1996-06-14|1998-01-06|Canon Inc|Information processor and its method| US6035313A|1997-03-24|2000-03-07|Motorola, Inc.|Memory address generator for an FFT| US5870582A|1997-03-31|1999-02-09|International Business Machines Corporation|Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched| US5937199A|1997-06-03|1999-08-10|International Business Machines Corporation|User programmable interrupt mask with timeout for enhanced resource locking efficiency| JP3546678B2|1997-09-12|2004-07-28|株式会社日立製作所|Multi-OS configuration method| US6094730A|1997-10-27|2000-07-25|Hewlett-Packard Company|Hardware-assisted firmware tracing method and apparatus| US7076784B1|1997-10-28|2006-07-11|Microsoft Corporation|Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment| US6000029A|1997-11-03|1999-12-07|Motorola, Inc.|Method and apparatus for affecting subsequent instruction processing in a data processor| US5938778A|1997-11-10|1999-08-17|International Business Machines Corporation|System and method for tracing instructions in an information handling system without changing the system source code| KR100246537B1|1997-11-25|2000-03-15|정선종|Pilot symbol aidea dual channel QPSK for CDMA system| SE9704476L|1997-12-02|1999-06-23|Ericsson Telefon Ab L M|Extended instruction decoding| US6009261A|1997-12-16|1999-12-28|International Business Machines Corporation|Preprocessing of stored target routines for emulating incompatible instructions on a target processor| US6202067B1|1998-04-07|2001-03-13|Lucent Technologies, Inc.|Method and apparatus for correct and complete transactions in a fault tolerant distributed database system| US6119129A|1998-05-14|2000-09-12|Sun Microsystems, Inc.|Multi-threaded journaling in a configuration database| US6308255B1|1998-05-26|2001-10-23|Advanced Micro Devices, Inc.|Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system| EP0992907B1|1998-10-06|2005-09-28|Texas Instruments Inc.|Trace fifo management| EP0992916A1|1998-10-06|2000-04-12|Texas Instruments Inc.|Digital signal processor| US6151669A|1998-10-10|2000-11-21|Institute For The Development Of Emerging Architectures, L.L.C.|Methods and apparatus for efficient control of floating-point status register| US20020147969A1|1998-10-21|2002-10-10|Richard A. Lethin|Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method| US6934832B1|2000-01-18|2005-08-23|Ati International Srl|Exception mechanism for a computer| US6732307B1|1999-10-01|2004-05-04|Hitachi, Ltd.|Apparatus and method for storing trace information| US7761857B1|1999-10-13|2010-07-20|Robert Bedichek|Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts| US6604188B1|1999-10-20|2003-08-05|Transmeta Corporation|Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction| US6738892B1|1999-10-20|2004-05-18|Transmeta Corporation|Use of enable bits to control execution of selected instructions| JP3776653B2|1999-11-24|2006-05-17|富士通株式会社|Arithmetic processing unit| US6754809B1|1999-12-30|2004-06-22|Texas Instruments Incorporated|Data processing apparatus with indirect register file access| US6665863B1|2000-05-31|2003-12-16|Microsoft Corporation|Data referencing within a database graph| US6826682B1|2000-06-26|2004-11-30|Transmeta Corporation|Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state| AU8316301A|2000-08-04|2002-02-18|Carr Scott Software Inc|Automatic transaction management| US6886094B1|2000-09-28|2005-04-26|International Business Machines Corporation|Apparatus and method for detecting and handling exceptions| US6671686B2|2000-11-02|2003-12-30|Guy Pardon|Decentralized, distributed internet data management| US7346632B2|2001-02-22|2008-03-18|International Business Machines Corporation|Mechanism for executing nested transactions in an execution environment supporting flat transactions only| US6963919B1|2001-02-28|2005-11-08|Agilent Technologies, Inc.|Method and system for improving computer network performance| US6745272B2|2001-04-04|2004-06-01|Advanced Micro Devices, Inc.|System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system| US7185234B1|2001-04-30|2007-02-27|Mips Technologies, Inc.|Trace control from hardware and software| US7305678B2|2001-05-17|2007-12-04|International Business Machines Corporation|Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server| US7613762B2|2001-05-25|2009-11-03|Sun Microsystems, Inc.|Floating point remainder with embedded status information| KR100625595B1|2001-05-28|2006-09-20|한국전자통신연구원|Parallel Logging Method of Transaction Processing System| US6826681B2|2001-06-18|2004-11-30|Mips Technologies, Inc.|Instruction specified register value saving in allocated caller stack or not yet allocated callee stack| US7185183B1|2001-08-02|2007-02-27|Mips Technologies, Inc.|Atomic update of CPO state| US20060218556A1|2001-09-28|2006-09-28|Nemirovsky Mario D|Mechanism for managing resource locking in a multi-threaded environment| US7174463B2|2001-10-04|2007-02-06|Lenovo Pte. Ltd.|Method and system for preboot user authentication| US7313734B2|2002-01-14|2007-12-25|International Business Machines Corporation|Method and system for instruction tracing with enhanced interrupt avoidance| US7546446B2|2002-03-08|2009-06-09|Ip-First, Llc|Selective interrupt suppression| US7496494B2|2002-09-17|2009-02-24|International Business Machines Corporation|Method and system for multiprocessor emulation on a multiprocessor host system| US6892286B2|2002-09-30|2005-05-10|Sun Microsystems, Inc.|Shared memory multiprocessor memory model verification system and method| US7103597B2|2002-10-03|2006-09-05|Mcgoveran David O|Adaptive transaction manager for complex transactions and business process| US7634638B1|2002-10-22|2009-12-15|Mips Technologies, Inc.|Instruction encoding for system register bit set and clear| US7568023B2|2002-12-24|2009-07-28|Hewlett-Packard Development Company, L.P.|Method, system, and data structure for monitoring transaction performance in a managed computer network environment| US7269693B2|2003-02-13|2007-09-11|Sun Microsystems, Inc.|Selectively monitoring stores to support transactional program execution| US7089374B2|2003-02-13|2006-08-08|Sun Microsystems, Inc.|Selectively unmarking load-marked cache lines during transactional program execution| US7269717B2|2003-02-13|2007-09-11|Sun Microsystems, Inc.|Method for reducing lock manipulation overhead during access to critical code sections| JP2009508187A|2005-08-01|2009-02-26|サン・マイクロシステムズ・インコーポレーテッド|Avoiding locks by executing critical sections transactionally| US6862664B2|2003-02-13|2005-03-01|Sun Microsystems, Inc.|Method and apparatus for avoiding locks by speculatively executing critical sections| US7398355B1|2003-02-13|2008-07-08|Sun Microsystems, Inc.|Avoiding locks by transactionally executing critical sections| US7398359B1|2003-04-30|2008-07-08|Silicon Graphics, Inc.|System and method for performing memory operations in a computing system| CA2472887A1|2003-06-30|2004-12-30|Gravic, Inc.|Methods for ensuring referential integrity in multithreaded replication engines| US7836450B2|2003-08-28|2010-11-16|Mips Technologies, Inc.|Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts| US7197586B2|2004-01-14|2007-03-27|International Business Machines Corporation|Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler| US8825615B2|2004-05-11|2014-09-02|Oracle International Corporation|Simplifying implementation of custom atomic transactions in a programming environment| US7703098B1|2004-07-20|2010-04-20|Sun Microsystems, Inc.|Technique to allow a first transaction to wait on condition that affects its working set| US7206903B1|2004-07-20|2007-04-17|Sun Microsystems, Inc.|Method and apparatus for releasing memory locations during transactional execution| US7395382B1|2004-08-10|2008-07-01|Sun Microsystems, Inc.|Hybrid software/hardware transactional memory| US7401202B1|2004-09-14|2008-07-15|Azul Systems, Inc.|Memory addressing| US20060064508A1|2004-09-17|2006-03-23|Ramesh Panwar|Method and system to store and retrieve message packet data in a communications network| US7373554B2|2004-09-24|2008-05-13|Oracle International Corporation|Techniques for automatic software error diagnostics and correction| US7856537B2|2004-09-30|2010-12-21|Intel Corporation|Hybrid hardware and software implementation of transactional memory access| EP1657118A1|2004-11-11|2006-05-17|IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A.|Collision recognition device for a vehicle| US7984248B2|2004-12-29|2011-07-19|Intel Corporation|Transaction based shared data operations in a multiprocessor environment| US7631073B2|2005-01-27|2009-12-08|International Business Machines Corporation|Method and apparatus for exposing monitoring violations to the monitored application| US20060212757A1|2005-03-15|2006-09-21|International Business Machines Corporation|Method, system, and program product for managing computer-based interruptions| US7421544B1|2005-04-04|2008-09-02|Sun Microsystems, Inc.|Facilitating concurrent non-transactional execution in a transactional memory system| US7496726B1|2005-04-18|2009-02-24|Sun Microsystems, Inc.|Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode| US7464161B2|2005-06-06|2008-12-09|International Business Machines Corporation|Enabling and disabling byte code inserted probes based on transaction monitoring tokens| US7350034B2|2005-06-20|2008-03-25|International Business Machines Corporation|Architecture support of best-effort atomic transactions for multiprocessor systems| US7882339B2|2005-06-23|2011-02-01|Intel Corporation|Primitives to enhance thread-level speculation| US20070005828A1|2005-06-30|2007-01-04|Nimrod Diamant|Interrupts support for the KCS manageability interface| CN1713164A|2005-07-21|2005-12-28|复旦大学|DMA controller and data transmission with multi-transaction discretionary process| US7870369B1|2005-09-28|2011-01-11|Oracle America, Inc.|Abort prioritization in a trace-based processor| US20070136289A1|2005-12-14|2007-06-14|Intel Corporation|Lock elision with transactional memory| US20070143755A1|2005-12-16|2007-06-21|Intel Corporation|Speculative execution past a barrier| US8117605B2|2005-12-19|2012-02-14|Oracle America, Inc.|Method and apparatus for improving transactional memory interactions by tracking object visibility| US7730286B2|2005-12-30|2010-06-01|Intel Corporation|Software assisted nested hardware transactions| US7810072B2|2006-01-06|2010-10-05|International Business Machines Corporation|Exception thrower| US20070186056A1|2006-02-07|2007-08-09|Bratin Saha|Hardware acceleration for a software transactional memory system| US20070198979A1|2006-02-22|2007-08-23|David Dice|Methods and apparatus to implement parallel transactions| US8099538B2|2006-03-29|2012-01-17|Intel Corporation|Increasing functionality of a reader-writer lock| US8180967B2|2006-03-30|2012-05-15|Intel Corporation|Transactional memory virtualization| US8180977B2|2006-03-30|2012-05-15|Intel Corporation|Transactional memory in out-of-order processors| US7930695B2|2006-04-06|2011-04-19|Oracle America, Inc.|Method and apparatus for synchronizing threads on a processor that supports transactional memory| US7636829B2|2006-05-02|2009-12-22|Intel Corporation|System and method for allocating and deallocating memory within transactional code| US7594094B2|2006-05-19|2009-09-22|International Business Machines Corporation|Move data facility with optional specifications| US7707394B2|2006-05-30|2010-04-27|Arm Limited|Reducing the size of a data stream produced during instruction tracing| US7849446B2|2006-06-09|2010-12-07|Oracle America, Inc.|Replay debugging| MY149658A|2006-06-12|2013-09-30|Mobile Money Internat Sdn Bhd|Transaction server| US20070300013A1|2006-06-21|2007-12-27|Manabu Kitamura|Storage system having transaction monitoring capability| US20080005504A1|2006-06-30|2008-01-03|Jesse Barnes|Global overflow method for virtualized transactional memory| US20080016325A1|2006-07-12|2008-01-17|Laudon James P|Using windowed register file to checkpoint register state| US7617421B2|2006-07-27|2009-11-10|Sun Microsystems, Inc.|Method and apparatus for reporting failure conditions during transactional execution| US7748618B2|2006-08-21|2010-07-06|Verizon Patent And Licensing Inc.|Secure near field transaction| US7865885B2|2006-09-27|2011-01-04|Intel Corporation|Using transactional memory for precise exception handling in aggressive dynamic binary optimizations| US20080086516A1|2006-10-04|2008-04-10|Oracle International|Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions| EP1918540B1|2006-11-06|2009-08-26|GM Global Technology Operations, Inc.|Operating method for a particulate filter, data processor program product and control apparatus therefore| CN101178787A|2006-11-10|2008-05-14|上海市卢湾区东南医院|Information communication method used for community old cadres health supervision| US7669040B2|2006-12-15|2010-02-23|Sun Microsystems, Inc.|Method and apparatus for executing a long transaction| JP2008165370A|2006-12-27|2008-07-17|Internatl Business Mach Corp <Ibm>|Method and device for dividing online transaction processing and executing in distributed environment| US8086827B2|2006-12-28|2011-12-27|Intel Corporation|Mechanism for irrevocable transactions| US7802136B2|2006-12-28|2010-09-21|Intel Corporation|Compiler technique for efficient register checkpointing to support transaction roll-back| US7627743B2|2007-01-12|2009-12-01|Andes Technology Corporation|Method and circuit implementation for multiple-word transfer into/from memory subsystems| US20080244544A1|2007-03-29|2008-10-02|Naveen Neelakantam|Using hardware checkpoints to support software based speculation| US8332374B2|2007-04-13|2012-12-11|Oracle America, Inc.|Efficient implicit privatization of transactional memory| US9009452B2|2007-05-14|2015-04-14|International Business Machines Corporation|Computing system with transactional memory using millicode assists| US8117403B2|2007-05-14|2012-02-14|International Business Machines Corporation|Transactional memory system which employs thread assists using address history tables| US7814378B2|2007-05-18|2010-10-12|Oracle America, Inc.|Verification of memory consistency and transactional memory| US20080320282A1|2007-06-22|2008-12-25|Morris Robert P|Method And Systems For Providing Transaction Support For Executable Program Components| US8266387B2|2007-06-27|2012-09-11|Microsoft Corporation|Leveraging transactional memory hardware to accelerate virtualization emulation| US7779232B2|2007-08-28|2010-08-17|International Business Machines Corporation|Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches| US8209689B2|2007-09-12|2012-06-26|Intel Corporation|Live lock free priority scheme for memory transactions in transactional memory| US7904434B2|2007-09-14|2011-03-08|Oracle International Corporation|Framework for handling business transactions| US7890472B2|2007-09-18|2011-02-15|Microsoft Corporation|Parallel nested transactions in transactional memory| US20090127332A1|2007-11-16|2009-05-21|Kyung Yang Park|System for processing payment employing off-line transaction approval mode of mobile card and method thereof| US20090138890A1|2007-11-21|2009-05-28|Arm Limited|Contention management for a hardware transactional memory| CN101170747A|2007-11-30|2008-04-30|中兴通讯股份有限公司|Relay state adjusting method and device| US20090157512A1|2007-12-14|2009-06-18|Qualcomm Incorporated|Near field communication transactions with user profile updates in a mobile environment| US8195898B2|2007-12-27|2012-06-05|Intel Corporation|Hybrid transactions for low-overhead speculative parallelization| US8706982B2|2007-12-30|2014-04-22|Intel Corporation|Mechanisms for strong atomicity in a transactional memory system| US8065491B2|2007-12-30|2011-11-22|Intel Corporation|Efficient non-transactional write barriers for strong atomicity| US8140497B2|2007-12-31|2012-03-20|Oracle America, Inc.|System and method for implementing nonblocking zero-indirection transactional memory| US7966459B2|2007-12-31|2011-06-21|Oracle America, Inc.|System and method for supporting phased transactional memory modes| US20090182983A1|2008-01-11|2009-07-16|International Business Machines Corporation|Compare and Branch Facility and Instruction Therefore| US8041900B2|2008-01-15|2011-10-18|Oracle America, Inc.|Method and apparatus for improving transactional memory commit latency| US8176279B2|2008-02-25|2012-05-08|International Business Machines Corporation|Managing use of storage by multiple pageable guests of a computing environment| US8380907B2|2008-02-26|2013-02-19|International Business Machines Corporation|Method, system and computer program product for providing filtering of GUEST2 quiesce requests| US8161273B2|2008-02-26|2012-04-17|Oracle America, Inc.|Method and apparatus for programmatically rewinding a register inside a transaction| EP2096564B1|2008-02-29|2018-08-08|Euroclear SA/NV|Improvements relating to handling and processing of massive numbers of processing instructions in real time| US8688628B2|2008-02-29|2014-04-01|Red Hat, Inc.|Nested queued transaction manager| US8316366B2|2008-04-02|2012-11-20|Oracle America, Inc.|Facilitating transactional execution in a processor that supports simultaneous speculative threading| US20090260011A1|2008-04-14|2009-10-15|Microsoft Corporation|Command line transactions| JP5385545B2|2008-04-17|2014-01-08|インターナショナル・ビジネス・マシーンズ・コーポレーション|Apparatus and method for controlling execution of transaction| US9367363B2|2008-05-12|2016-06-14|Oracle America, Inc.|System and method for integrating best effort hardware mechanisms for supporting transactional memory| US8612950B2|2008-06-19|2013-12-17|Intel Corporation|Dynamic optimization for removal of strong atomicity barriers| US7996686B2|2008-07-07|2011-08-09|International Business Machines Corporation|Branch trace methodology| WO2010014200A1|2008-07-28|2010-02-04|Advanced Micro Devices, Inc.|Virtualizable advanced synchronization facility| US9449314B2|2008-10-02|2016-09-20|International Business Machines Corporation|Virtualization of a central processing unit measurement facility| US8191046B2|2008-10-06|2012-05-29|Microsoft Corporation|Checking transactional memory implementations| US20100122073A1|2008-11-10|2010-05-13|Ravi Narayanaswamy|Handling exceptions in software transactional memory systems| JP4702962B2|2008-11-12|2011-06-15|インターナショナル・ビジネス・マシーンズ・コーポレーション|MEMORY CONTROL DEVICE, PROGRAM, AND METHOD| US8789057B2|2008-12-03|2014-07-22|Oracle America, Inc.|System and method for reducing serialization in transactional memory using gang release of blocked threads| US8672820B2|2008-12-04|2014-03-18|Honda Motor Co., Ltd.|Tool stocker, machine tool system, and tool damage detecting apparatus| US20100153776A1|2008-12-12|2010-06-17|Sun Microsystems, Inc.|Using safepoints to provide precise exception semantics for a virtual machine| US9274855B2|2008-12-24|2016-03-01|Intel Corporation|Optimization for safe elimination of weak atomicity overhead| US10210018B2|2008-12-24|2019-02-19|Intel Corporation|Optimizing quiescence in a software transactional memory system| US8914620B2|2008-12-29|2014-12-16|Oracle America, Inc.|Method and system for reducing abort rates in speculative lock elision using contention management mechanisms| US8799582B2|2008-12-30|2014-08-05|Intel Corporation|Extending cache coherency protocols to support locally buffered data| CN101710433A|2008-12-31|2010-05-19|深圳市江波龙电子有限公司|Electronic payment card and transaction method thereof| US9170844B2|2009-01-02|2015-10-27|International Business Machines Corporation|Prioritization for conflict arbitration in transactional memory management| CN101819518B|2009-02-26|2013-09-11|国际商业机器公司|Method and device for quickly saving context in transactional memory| US8266107B2|2009-03-11|2012-09-11|International Business Machines Corporation|Method for mirroring a log file by threshold driven synchronization| US9940138B2|2009-04-08|2018-04-10|Intel Corporation|Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations| US20100307689A1|2009-06-06|2010-12-09|Michael James Huebner|Pivoting tape dispenser| US8973004B2|2009-06-26|2015-03-03|Oracle America, Inc.|Transactional locking with read-write locks in transactional memory systems| US8356166B2|2009-06-26|2013-01-15|Microsoft Corporation|Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers| GB2484416B|2009-06-26|2015-02-25|Intel Corp|Optimizations for an unbounded transactional memory system| US8489864B2|2009-06-26|2013-07-16|Microsoft Corporation|Performing escape actions in transactions| US8281185B2|2009-06-30|2012-10-02|Oracle America, Inc.|Advice-based feedback for transactional execution| US8229907B2|2009-06-30|2012-07-24|Microsoft Corporation|Hardware accelerated transactional memory system with open nested transactions| US8688964B2|2009-07-20|2014-04-01|Microchip Technology Incorporated|Programmable exception processing latency| GB2472620B|2009-08-12|2016-05-18|Cloudtran Inc|Distributed transaction processing| US8392694B2|2009-09-15|2013-03-05|International Business Machines Corporation|System and method for software initiated checkpoint operations| GB2474446A|2009-10-13|2011-04-20|Advanced Risc Mach Ltd|Barrier requests to maintain transaction order in an interconnect with multiple paths| US8327188B2|2009-11-13|2012-12-04|Oracle America, Inc.|Hardware transactional memory acceleration through multiple failure recovery| US8516202B2|2009-11-16|2013-08-20|International Business Machines Corporation|Hybrid transactional memory system and method| US9529839B2|2009-12-07|2016-12-27|International Business Machines Corporation|Applying limited-size hardware transactional memory to arbitrarily large data structure| US8473921B2|2009-12-15|2013-06-25|Microsoft Corporation|Debugging mechanisms in a cache-based memory isolation system| US9092253B2|2009-12-15|2015-07-28|Microsoft Technology Licensing, Llc|Instrumentation of hardware assisted transactional memory system| US8521995B2|2009-12-15|2013-08-27|Intel Corporation|Handling operating system transitions in an unbounded transactional memory mode| US8095824B2|2009-12-15|2012-01-10|Intel Corporation|Performing mode switching in an unbounded transactional memory system| US8316194B2|2009-12-15|2012-11-20|Intel Corporation|Mechanisms to accelerate transactions using buffered stores| US8290991B2|2009-12-15|2012-10-16|Juniper Networks, Inc.|Atomic deletion of database data categories| US8301849B2|2009-12-23|2012-10-30|Intel Corporation|Transactional memory in out-of-order processors with XABORT having immediate argument| US20110161371A1|2009-12-29|2011-06-30|Microgen Plc|Sql generation| KR101639672B1|2010-01-05|2016-07-15|삼성전자주식회사|Unbounded transactional memory system and method for operating thereof| US8549468B2|2010-02-08|2013-10-01|National Tsing Hua University|Method, system and computer readable storage device for generating software transaction-level modeling model| US8850166B2|2010-02-18|2014-09-30|International Business Machines Corporation|Load pair disjoint facility and instruction therefore| US20110208921A1|2010-02-19|2011-08-25|Pohlack Martin T|Inverted default semantics for in-speculative-region memory accesses| US8438568B2|2010-02-24|2013-05-07|International Business Machines Corporation|Speculative thread execution with hardware transactional memory| US8739164B2|2010-02-24|2014-05-27|Advanced Micro Devices, Inc.|Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof| US8402227B2|2010-03-31|2013-03-19|Oracle International Corporation|System and method for committing results of a software transaction using a hardware transaction| US8464261B2|2010-03-31|2013-06-11|Oracle International Corporation|System and method for executing a transaction using parallel co-transactions| US8631223B2|2010-05-12|2014-01-14|International Business Machines Corporation|Register file supporting transactional processing| US9626187B2|2010-05-27|2017-04-18|International Business Machines Corporation|Transactional memory system supporting unbroken suspended execution| US20110302143A1|2010-06-02|2011-12-08|Microsoft Corporation|Multi-version concurrency with ordered timestamps| US9880848B2|2010-06-11|2018-01-30|Advanced Micro Devices, Inc.|Processor support for hardware transactional memory| US8560816B2|2010-06-30|2013-10-15|Oracle International Corporation|System and method for performing incremental register checkpointing in transactional memory| US8479053B2|2010-07-28|2013-07-02|Intel Corporation|Processor with last branch record register storing transaction indicator| US8561033B2|2010-07-30|2013-10-15|International Business Machines Corporation|Selective branch-triggered trace generation apparatus and method| US8549504B2|2010-09-25|2013-10-01|Intel Corporation|Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region| US8424015B2|2010-09-30|2013-04-16|International Business Machines Corporation|Transactional memory preemption mechanism| US9552206B2|2010-11-18|2017-01-24|Texas Instruments Incorporated|Integrated circuit with control node circuitry and processing circuitry| US9122476B2|2010-12-07|2015-09-01|Advanced Micro Devices, Inc.|Programmable atomic memory using hardware validation agent| US8788794B2|2010-12-07|2014-07-22|Advanced Micro Devices, Inc.|Programmable atomic memory using stored atomic procedures| US8442962B2|2010-12-28|2013-05-14|Sap Ag|Distributed transaction management using two-phase commit optimization| US8818867B2|2011-11-14|2014-08-26|At&T Intellectual Property I, L.P.|Security token for mobile near field communication transactions| US9442824B2|2012-03-16|2016-09-13|International Business Machines Corporation|Transformation of a program-event-recording event into a run-time instrumentation event| US9158660B2|2012-03-16|2015-10-13|International Business Machines Corporation|Controlling operation of a run-time instrumentation facility| US9336046B2|2012-06-15|2016-05-10|International Business Machines Corporation|Transaction abort processing| US9317460B2|2012-06-15|2016-04-19|International Business Machines Corporation|Program event recording within a transactional environment| US8966324B2|2012-06-15|2015-02-24|International Business Machines Corporation|Transactional execution branch indications| US9311101B2|2012-06-15|2016-04-12|International Business Machines Corporation|Intra-instructional transaction abort handling| US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing| US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions| US8682877B2|2012-06-15|2014-03-25|International Business Machines Corporation|Constrained transaction execution| US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution| US9442737B2|2012-06-15|2016-09-13|International Business Machines Corporation|Restricting processing within a processor to facilitate transaction completion| US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction| US9772854B2|2012-06-15|2017-09-26|International Business Machines Corporation|Selectively controlling instruction execution in transactional processing| US8880959B2|2012-06-15|2014-11-04|International Business Machines Corporation|Transaction diagnostic block| US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction| US9367323B2|2012-06-15|2016-06-14|International Business Machines Corporation|Processor assist facility| US8688661B2|2012-06-15|2014-04-01|International Business Machines Corporation|Transactional processing| US20130339680A1|2012-06-15|2013-12-19|International Business Machines Corporation|Nontransactional store instruction| US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution| US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution|US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction| US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction| US20130339680A1|2012-06-15|2013-12-19|International Business Machines Corporation|Nontransactional store instruction| US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution| US9772854B2|2012-06-15|2017-09-26|International Business Machines Corporation|Selectively controlling instruction execution in transactional processing| US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions| US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution| US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing| US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution| US9336046B2|2012-06-15|2016-05-10|International Business Machines Corporation|Transaction abort processing| US10061746B2|2014-09-26|2018-08-28|Intel Corporation|Instruction and logic for a vector format for processing computations| GB2533650B|2014-12-23|2021-07-21|Advanced Risc Mach Ltd|Debugging data processing transactions| GB2533604B|2014-12-23|2021-07-14|Advanced Risc Mach Ltd|Instruction sampling within transactions| US20160179550A1|2014-12-23|2016-06-23|Intel Corporation|Fast vector dynamic memory conflict detection| US10303477B2|2015-06-26|2019-05-28|Intel Corporation|Persistent commit processors, methods, systems, and instructions| CN106649143B|2015-10-29|2020-06-26|阿里巴巴集团控股有限公司|Cache access method and device and electronic equipment| US9471313B1|2015-11-25|2016-10-18|International Business Machines Corporation|Flushing speculative instruction processing| US10831509B2|2017-02-23|2020-11-10|Ab Initio Technology Llc|Dynamic execution of parameterized applications for the processing of keyed network data streams|
法律状态:
2018-12-04| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2020-01-14| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]| 2021-11-23| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2022-01-04| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 12/06/2013, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US13/524,898|US9772854B2|2012-06-15|2012-06-15|Selectively controlling instruction execution in transactional processing| US13/524898|2012-06-15| PCT/IB2013/054813|WO2013186722A2|2012-06-15|2013-06-12|Selectively controlling instruction execution in transactional processing| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|